我有一種情況,我收到來自第三方服務的響應,指示我的初始請求失敗,我應該重試。我在Celery任務中調用該服務。重試呼叫不會在異常中捕獲,似乎不是將任務的新實例提供給代理,而是繼續執行當前任務,它將任務交給代理並退出任務。有沒有辦法設置重試並繼續執行當前任務?Django芹菜重試()任務,但繼續當前任務
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)
如果不引發異常的當前任務將不會被標記爲重試狀態, 但在成功/失敗狀態取決於任務的其餘部分是否成功。 由於重試任務將與當前任務共享相同的uuid,因此如果新任務在當前任務之前返回,則當前任務可以覆蓋新任務的結果。 這當然,無論如何你都忽略了任務的結果並不重要。
這有道理嗎?
0
我的代碼略有不同。在這種情況下,我有一個芹菜任務,循環接收者列表來發送消息。如果任何發送呼叫失敗,我不希望芹菜任務退出,而是繼續與其他接收者。
在我的情況下,這不會發生在task.retry(throw = False)上。我確實看到這個任務正在退出,而沒有做任何事情。
@celery_app.task()
def send_msg_to_list():
for recvr in Emailrecvr.objects.filter(query=obj):
try:
email_rv = recvr.send(msg)
except SMTPException:
# Dont exit the loop but continue with others
send_msg_to_list.retry(throw=False)
# do some blah here
相關問題
- 1. 芹菜任務重試(芹菜,Django和RabbitMQ)
- 2. Django芹菜任務錯誤/異常後繼續
- 3. 終止當前的芹菜任務
- 4. 芹菜 - 獲取當前任務的任務ID
- 5. 芹菜工人不重試任務()
- 6. 重試芹菜任務通過task_id
- 7. 芹菜任務不會重試
- 8. 芹菜鏈任務
- 9. 順序連續芹菜鏈接任務
- 10. 如何從先前的芹菜任務中產生芹菜任務?
- 11. 重試丟失或失敗的任務(芹菜,Django和RabbitMQ)
- 12. 在倒計時前重試芹菜任務
- 13. Django的芹菜任務不.delay
- 14. 芹菜Django的週期性任務
- 15. 芹菜任務在Django管理
- 16. Django 1.9 +芹菜未註冊任務
- 17. Django的芹菜計劃任務django.core.exceptions.ImproperlyConfigured
- 18. 任務狀態和Django的芹菜
- 19. 芹菜不會在給定的ETA下繼續執行任務
- 20. 芹菜 - 任務成功之前它的子任務
- 21. 芹菜任務計劃(芹菜,Django和RabbitMQ)
- 22. 芹菜任務重複問題
- 23. 重置芹菜任務倒計時
- 24. 關掉芹菜任務
- 25. 芹菜任務不工作
- 26. 去抖芹菜任務?
- 27. 芹菜任務剖析
- 28. 芹菜任務instanciation緩存
- 29. 芹菜任務計劃
- 30. 芹菜任務優先級
你可能會得到一個不同於你正在捕獲的'SMTPException'的異常,所以既沒有重試也沒有'blah' – Anentropic 2017-07-25 15:51:10