gpt4 book ai didi

django - 调度django自定义命令

转载 作者:行者123 更新时间:2023-12-05 00:39:19 25 4
gpt4 key购买 nike

我很难让我的自定义命令按计划运行。我尝试了一个 cronjob 和 django-chronograph ,但我似乎无法让它像从命令行(成功)那样运行。

我只是使用安装在 Ubunutu 上的 django 在本地开发一个应用程序。

我有一个自定义命令,用于清除超过 30 天的日志条目。为了反复测试它,我修改了它,以便它只删除一个有点随意的条目:

from datetime import datetime, timedelta
from hitcount.models import Hit
from django.core.management.base import BaseCommand, CommandError

class Command(BaseCommand):
args = '<days>'
help = 'Clear out all Hits that occured over "days" days ago'

def handle(self, *args, **options):
list = Hit.objects.filter(created__lt = datetime.now()-timedelta(days=2) )
list[0].delete()

self.stdout.write('Hit deleted - %s' % list[0])

此命令 (del_hit.py) 位于以下结构中:
/project_dir
/app
/management
__init__.py
/commands
__init__.py
del_hit.py

正如我所说,我可以从我的 project_dir 成功运行此命令
python manage.py del_hit

我尝试安装 django-chronograph .它似乎非常有用。它识别出我的命令并允许我从下拉列表中选择它。我按照指示应用了 cron:
  • /home/vadmin/development/python/my_proj/manage.py cron

  • 但是,当它尝试执行命令时,它在日志中给了我以下错误:
    The job failed to run. The exception was :

    Unknown command: u'del_hit'

    Traceback (most recent call last):

    File "/home/vadmin/development/python/my_proj/chronograph/models.py", line 213, in handle_run
    call_command(self.command, *args, **options)

    File "/usr/lib/python2.6/dist-packages/django/core/management/__init__.py", line 155, in call_command
    raise CommandError("Unknown command: %r" % name)

    CommandError: Unknown command: u'del_hit'

    我尝试从标准 View 自己运行命令:
    from django.core.management import call_command
    def test_del(request):
    list = Hit.objects.filter(created__lt = datetime.now()-timedelta(days=2) )

    args = []
    options = {}
    call_command('del_hit', *args, **options)

    return render_to_response('test.html', {'del_hit_item':list[0]})

    这确实成功执行。

    最后,我尝试设置一个 cronjob 每小时执行一次
    30 * * * * python /home/vadmin/development/python/my_proj/manage.py del_hit

    这没有用。

    我可以使用 django-chronograph(最好)或简单的 cronjob 来帮助我的自定义命令按计划运行。

    最佳答案

    看起来你需要在你的项目目录中才能正常工作。

    尝试更新您调用的命令以先执行 'cd',
    (cd /home/vadmin/development/python/my_proj && ./manage.py del_hit)

    关于django - 调度django自定义命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4519829/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com