我有一个django-project,它有一个名为app的应用程序,它有一个名为cron.py的文件和一个名为main_routine()的函数。
我希望每分钟都调用main_routine()函数。
在我的django-project/django-project/settings.py中,我有这样的内容:
INSTALLED_APPS = [
'django_crontab',
...
]
...
CRONJOBS = [
('*/1 * * * *', 'app.cron.main_routine')
]我的django-project/app/cron.py看起来是这样的:
from app.models import SomeModel
from django.utils import timezone
def main_routine():
object = SomeModel.objects.get(name='TestObject1')
object.updated = timezone.now()
object.save()当然,我运行:python3 manage.py crontab add和终端打印:
adding cronjob: (someHash) -> ('*/1 * * * *', 'app.cron.main_routine')为了安全起见,我运行了:python3 manage.py crontab show和终端打印:
Currently active jobs in crontab:
someHash -> ('*/1 * * * *', 'app.cron.main_routine')要检查每件事是否有效,我运行:python3 manage.py crontab run someHash
然后,我查看管理页面,并看到TestObject1有一个updated日期时间刚刚。(到目前为止,一切似乎进展顺利)
主要问题:无论我等待多长时间,作业都不会自动执行。
我做错了什么?
一些背景信息:
发布于 2022-04-07 05:49:25
首先:我仍然不知道为什么crontab不工作。
然而,我找到了一个解决这个问题的方法。
您可以使用python高级调度程序。apscheduler,代替crontab。
这样做的目的是编写一个模块,其中包含您想要的功能,并将其连接到AppConfig应用程序的apps.py文件中。
在这篇文章中有一个很好的演练。
发布于 2022-08-11 20:39:48
不能评论因为我是新来的
同样的事情也发生在我身上,直到我像你一样手动运行它(与散列一样)。原来我的代码中有一个bug,所以当它到达时,crontab会自动取消它,因为它会产生一个错误!
我已经设置了一个5分钟的计时器来验证作业是否成功地运行了。我的设置与您完全相同(+一些工厂和api请求)
https://stackoverflow.com/questions/71703065
复制相似问题