iT邦幫忙

2023 iThome 鐵人賽

DAY 27
0
Modern Web

30Day啟動!!系列 第 27

Day27-Celery 處理失敗和重新嘗試

  • 分享至 

  • xImage
  •  

處理 Celery 任務的失敗情況

在現實應用中,任務執行可能會失敗,這可能是由於網絡問題、資源不足、程式錯誤等原因。Celery 允許你處理這些失敗情況,以確保你的應用程式能夠正常運行。

一種處理失敗情況的方式是使用 Celery 的 on_failure 裝飾器。讓我們來看一個示例:

celery_example.py

from celery import Celery

app = Celery('celery_example', broker='pyamqp://guest@localhost//')

@app.task
def my_task(x, y):
try:
result = x / y
return result
except ZeroDivisionError as e:
my_task.on_failure(e)

在這個例子中,我們定義了一個名為 my_task 的 Celery 任務,該任務接受兩個參數 x 和 y,並嘗試執行除法操作。如果除法操作引發 ZeroDivisionError,我們使用 my_task.on_failure(e) 來處理失敗情況。

設定重新嘗試策略

Celery 允許你設定重新嘗試策略,以確保當任務失敗時,它將被重新嘗試執行。你可以在 Celery 配置中設定這些策略。

以下是一個示例,我們將設定任務在失敗時最多重試 3 次,並在每次重試之間等待 10 秒:

celery.py

from celery import Celery

app = Celery('celery_example', broker='pyamqp://guest@localhost//')

app.conf.task_default_retry_delay = 10 # 重試間隔 10 秒
app.conf.task_default_max_retries = 3 # 最多重試 3 次

這樣,當任務失敗時,Celery 將自動重新嘗試執行該任務,最多 3 次,每次重試之間等待 10 秒。


上一篇
Day26-設置 Celery
下一篇
Day28-Celery - 監視和日誌記錄
系列文
30Day啟動!!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言