5

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 countHerokuRabbitMQ管理コンソールでは、が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で成功しました:なし

これに関する助けをいただければ幸いです。どうもありがとう!

4

1 に答える 1

1

私はそれを理解しました。私はデバッグをしていたので、タスクを 5 分または 10 分で実行するように設定していました。正確な理由はわかりませんが、私のセットアップではこれを処理するのに苦労しています。タスクを処理してキューに入れるには、ある程度の時間が必要なようです。とにかく、1 時間以上前にスケジュールされたタスクは正しく実行されています。

于 2012-09-05T18:21:27.207 に答える