セロリビートで特定のタスクを実行するのに多くの問題があります。以下のようないくつかのタスクはbeatによってトリガーされますが、メッセージはrabbitmqによって決して受信されません.
私のdjango設定ファイルには、次の定期的なタスクがあります
CELERYBEAT_SCHEDULE = {
...
'update_locations': {
'task': 'cron.tasks.update_locations',
'schedule': crontab(hour='10', minute='0')
},
...
}
10 UTC ビートで、期待どおりにタスクが実行されます
[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はbeatとは別のサーバーにあることに注意してください。
メッセージが実際にrabbitmqによって送信および/または受信されたことを確認するためにできることはありますか? これらのタスクを確実に実行するようにスケジュールするより良い方法または他の方法はありますか?