如何解决在Celery任务中,数据库调度程序是否足够,还是我还需要指定run_every属性?
我有一个定期任务,该任务应该每天运行一次,但目前每天运行两次,我不确定为什么。第二轮运行发生在预期的运行时间之后数毫秒。
我的定期任务指定了 run_every 属性:
run_every = crontab(小时= 1,分钟= 1)
但是在我的设置文件中,指定了数据库调度程序:
CELERYBEAT_SCHEDULER ='djcelery.schedulers.DatabaseScheduler'
此外,在数据库中,还有带有任务名称及其crontab计划的表。 例如,我们有一个名为djcelery_crontabschedule的表,它还指定了同一任务应在上午1:01运行。
这是否会使我的任务每天运行两次?
解决方法
我从不使用run_every
...这是我使用的beatconfig.py文件中的一个示例:
beat_schedule = {
'company-data-report': {
'task': 'report.company_data_report','schedule': crontab(minute=0,hour=7),'args': [],'options': {'expires': 120*60}
},etc
此特定任务每天在指定时间运行。我们使用默认的Celery调度程序,而不是某些第三方实现。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。