我正在努力实现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
这些文档表明@daily
和0 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/以获得您可能在这里发现有用的软件包的完整列表。