我正在尝试使用芹菜节拍在特定的时间每天运行任务。然而,出于测试目的,我设置了两个任务,每两小时运行一次,这就是我的配置:
CELERYBEAT_SCHEDULE = {
'daily-google-connect': {
'task': 'app.engine.schedule_fetcher',
'schedule': crontab(hour='*/2'),
'args': (['G'])
},
'daily-facebook-connect': {
'task': 'app.engine.schedule_fetcher',
'schedule': crontab(hour='*/2'),
'args': (['F'])
}
}
这就是我经营芹菜的方式:
celery beat -A app.engine.celery --schedule=/tmp/celerybeat-schedule --pidfile=/tmp/celerybeat.pid -l info
所有东西都使用Docker compose在Docker容器中运行,所以我确保重新构建应用程序的映像并重新启动容器。
我甚至进入了正在运行的容器,在代码中看到了crontab设置。。。然而,在我的日志中,我看到任务每分钟都在运行。
我还能做些什么来调试它?
我很感激你的帮助,
感谢
您的crontab配置为"每隔两小时运行一分钟"。
from celery.schedules import crontab
str(crontab(hour='*/2'))
'<crontab: * */2 * * * (m/h/d/dM/MY)>'
参考:https://crontab.guru/#*_*/2_*_*_*
"每两小时"的正确crontab为:0 */2 * * *
.
参考:https://crontab.guru/every-2-hours
这应该可以解决您的问题:
CELERYBEAT_SCHEDULE = {
'daily-google-connect': {
'task': 'app.engine.schedule_fetcher',
'schedule': crontab(minute='0', hour='*/2'),
'args': (['G'])
},
'daily-facebook-connect': {
'task': 'app.engine.schedule_fetcher',
'schedule': crontab(minute='0', hour='*/2'),
'args': (['F'])
}
}