私は、サードパーティのサービスから、最初のリクエストが失敗し、再試行する必要があることを示す応答を受け取る状況があります。私はセロリの仕事でサービスを呼んでいます。再試行の呼び出しは例外では捕捉されず、ブローカにタスクの新しいインスタンスを渡して現在のタスクを続行するのではなく、そのタスクをブローカに渡してタスクを終了するように見えます。再試行を設定して現在のタスクを続行する方法はありますか?Django Celery retry()タスク現在のタスクを続行します
0
A
答えて
1
task.retry
は、タスクが再試行されたことを検出するために使用されるRetryTaskError
例外を発生させます。ここで注意を参照してください:http://docs.celeryproject.org/en/latest/userguide/tasks.html#retrying-a-task-if-something-failsは
あなたは、この動作を省略することができますthrow=False
を使用することにより:
task.retry(throw=False)
# do something else
raise RetryTaskError(None, None)
あなたは現在のタスクが再試行状態にあるとしてマークされることはありません例外を発生させない場合は、 しかし中残りのタスクが成功するかどうかによって、SUCCESS/FAILURE状態になります。 再試行タスクは現在のタスクと同じuuidを共有するため、新しいタスクが現在のタスクの前に戻ると、現在のタスクは新しいタスクの結果を上書きできます。 これはもちろん、タスクの結果を無視しても問題ありません。
それは意味がありますか?
0
私のコードは少し異なります。この場合、メッセージを送信する受信者のリストをループするセロリのタスクがあります。送信呼び出しのいずれかが失敗した場合、セロリタスクを終了したくない代わりに、他の受信者と続行します。
これは私のケースではtask.retry(throw = False)では起こりません。私は、その時点でタスクを終了していないと言っています。
関連する問題
- 1. Celeryタスクを定期的に実行する(Djangoなし)
- 2. 現在実行中のHadoopタスクのタスク試行IDを取得
- 3. django-celery-emailタスクが実行されていません
- 4. そのタスクをインポートできないときにCeleryタスクを実行する
- 5. スーパーバイザでUbuntuでCeleryタスクを実行しています
- 6. Celery Python同期タスク
- 7. Django + Celery - 定期的なタスクが実行されない理由
- 8. django-celery:動的にタスクを作成して登録する
- 9. ANT - 現在のタスク名
- 10. Celeryでは、どのようにタスクを実行してから、そのタスクを別のタスクを実行させて、それを続けるのですか?
- 11. Celeryタスクの実行中にsettings.py変数を呼び出す
- 12. Celery - 別のタスクの最後に定期的なタスクをスケジュールします。
- 13. Celeryタスクのon_failureメソッドにパラメータを渡す
- 14. Celery:タスクのキューを制限する
- 15. すべてのCeleryタスクの実行時に何かを実行します
- 16. Django Celery定期的なタスクcontrabを無視
- 17. Django、Celery、Redis、RabbitMQ:ファンアウトオン書き込みの連鎖タスク
- 18. MySQLクエリから返された各行のCeleryタスクを実行しますか?
- 19. Django Celeryのタスクが完了せず、常に保留中のままです
- 20. 現在のスレッドでScalaZタスクを実行するには
- 21. アンドロイドで現在実行中のタスクを殺す方法
- 22. 最近のタスクから現在のアクティビティを除外します
- 23. Capistranoタスクの現在のサーバーの参照
- 24. CeleryタスクへのPythonマルチスレッド。 celery_task.update_state()エラー
- 25. ユーザー入力に基づいてdjango-celeryを使用してタスクをスケジュールする
- 26. Django Celery - RabbitMQを使用してビューとタスク間でオブジェクトを渡す
- 27. Chapelで現在のタスクIDを取得しますか?
- 28. 実行し続ける別のタスクの後にタスクを実行する
- 29. Pymongo、Celeryによる接続プーリングと非同期タスク
- 30. Celeryは実際にどのようにタスクを実行しますか?
あなたはたぶん、あなたが捕捉している 'SMTPException'よりも別の例外が発生しているので、再試行も 'blah'にも到達していません – Anentropic