Django扩展作业每天运行



我正在努力实现django扩展管理工作。我想知道我如何才能在django内部解雇工作,以便每天运行代码,并指定确切的时间,如凌晨4点在django扩展管理工作。目前代码如下:

from django_extensions.management.jobs import DailyJob
class Job(DailyJob):
help = "Send notification On Instruction Instances"

def execute(self):
print("job executed at 4:00 Am")

任何帮助都将非常感谢

Django不处理计时,但是crontab可以。

只要你同意所有日常工作在凌晨4点运行,你就可以更新你的crontab来使用它。文档显示:

@daily /path/to/my/project/manage.py runjobs daily

这些文档表明@daily0 0 * * *是等价的。

把你的crontab改成:

0 4 * * * /path/to/my/project/manage.py runjobs daily

他们的源代码还显示有一个runjob命令可以接受一个作业名称。因此,要在凌晨4点运行作业,您可以使用:

0 4 * * * /path/to/my/project/manage.py runjob my_job
但是,此作业必须而不是是DailyJob,因为它将运行两次(一次每天从runjobs daily运行,一次在凌晨4点从runjob myjob运行)。我认为要做到这一点,你只需要继承BaseJob:
class Job(BaseJob):
help = "Send notification On Instruction Instances"

但我不是100%确定这将在你的代码。我可能会尝试将它直接添加到jobs/目录下。

第一个答案是正确的,但只是为你添加一些选项,有一些django包可以很好地处理后台任务和调度,从简单的东西到复杂的解决方案,如芹菜。

查看https://djangopackages.org/grids/g/workers-queues-tasks/以获得您可能在这里发现有用的软件包的完整列表。

最新更新