CeleryとRabbitMQを使用しているときに、スケジュールされたタスクを指定された将来の時間に実行するのに問題があります。
RabbitMQアドオンを使用して、HerokuサーバーでDjangoを使用します。
問題:
タスクがまったく実行されない場合もあれば、実行される場合もありますが、実行される時間は大幅にずれています(1時間など)。
実行されなかったタスクの例:
カウントダウンまたはETAを使用してタスクを実行しようとすると、実際には実行されません。これは、実行されなかったETAタスクの例です。
>>> dummy_task.apply_async(eta=datetime.datetime.now() + timedelta(seconds=60))
<AsyncResult: 03001c1c-329e-46a3-8180-b115688e1865>
結果のログ:
2012-07-24T14:03:08 + 00:00 app [scheduler.1]:[2012-07-24 10:03:08,909:INFO / MainProcess] ブローカーからタスクを取得しました:events.tasks.dummy_task [910ff406-d51c-4c29-bdd1-fec1a8168c12] eta:[2012-07-24 10:04:08.819528 + 00:00]
1分後、何も起こりません。私のunacknowledged message count
HerokuRabbitMQ管理コンソールでは、が1つ増えて、そこにとどまります。
これは機能します:
delay()メソッドを使用してタスクを実行できることを確認することにより、セロリタスクが正しく登録され、RabbitMQがタスクを受け入れるように構成されていることを確認しました。
>>> dummy_task.delay()
<AsyncResult: 1285ff04-bccc-46d9-9801-8bc9746abd1c>
結果のログ:
2012-07-24T14:29:26 + 00:00 app [worker.1]:[2012-07-24 10:29:26,513:INFO / MainProcess] ブローカーからタスクを取得しました:events.tasks.dummy_task [1285ff04-bccc-46d9-9801-8bc9746abd1c] ...。 2012-07-24T14:29:26 + 00:00 app [worker.1]:[2012-07-24 10:29:26,571:INFO / MainProcess] タスクevents.tasks.dummy_task[1285ff04-bccc-46d9-9801-8bc9746abd1c] 0.0261888504028sで成功しました:なし
これに関する助けをいただければ幸いです。どうもありがとう!