最近有一个新的任务需要在后台定时进行,于是使用了celery的定时器来实现,但是加了任务后,到设置的时间点时任务就是不会被触发执行。定位了很多地方,最后发现是时间设置有问题。
需求:
早上7点~凌晨12点每30分钟执行一次,于是我将任务定义成了这样
sender.add_periodic_task(
crontab(minute='*/30', hour="7-24"),
sync_module_data_periodic,
name="sync module data",
queue="celery_module_queue",
)
与这个任务一起注册的其它定时任务都可以正常被触发(区别在于其它任务只在指定的几个时间点触发),唯独这个任务不行。定位了很久才发现是hour那里设置错了,应该是7-23,没有24点。。
修改后:
sender.add_periodic_task(
crontab(minute='*/30', hour="7-23"),
sync_module_data_periodic,
name="sync module data",
queue="celery_module_queue",
)
这里再记录一下celery常用的cronrab配置(引自