我在用芹菜打败执行某些任务时遇到很多问题。下面的一些任务会被节拍触发,但是rabbitmq永远不会收到消息。
在我的django设置文件中,我有以下perdiodic任务
CELERYBEAT_SCHEDULE = {
...
'update_locations': {
'task': 'cron.tasks.update_locations',
'schedule': crontab(hour='10', minute='0')
},
...
}
at 10 UTC beat按预期执行任务
[2015-05-13 10:00:00,046: DEBUG/MainProcess] cron.tasks.update_locations sent. id->a1c53d0e-96ca-4673-9d03-972888581176
但是这条消息永远不会到达rabbitmq(我使用rabbitmq中的跟踪模块来跟踪传入的消息)。我还有其他一些似乎运行良好的任务但是上面的某些任务从未运行过。使用cron.tasks.update_locations.delay()在django中手动运行任务可以毫无问题地运行任务。请注意我的Rabbitmq与服务器不同。
我能做些什么来确保Rabbitmq实际发送和/或接收消息吗?是否有更好或其他方式来安排这些任务以确保它们运行?
答案 0 :(得分:0)
从这些最小的描述中有点难以回答。
为什么这是在Django设置文件中?我本以期望Celery配置设置有自己的配置对象。 看http://celery.readthedocs.org/en/latest/reference/celery.html#celery.Celery.config_from_object