我使用多個task.apply_async()
和task.get()
對服務器進行異步調用,並使客戶端等待結果。這些任務可能需要不同的時間才能返回從1分鐘到3分鐘完成的結果。如何處理芹菜中的TimeoutError
我想檢測任務何時得到TimeError
,因爲服務器已關閉,並且無法處理或交付請求。使用apply_async
調用的超時是處理這些錯誤的唯一方法?有另一種方法嗎?
我使用多個task.apply_async()
和task.get()
對服務器進行異步調用,並使客戶端等待結果。這些任務可能需要不同的時間才能返回從1分鐘到3分鐘完成的結果。如何處理芹菜中的TimeoutError
我想檢測任務何時得到TimeError
,因爲服務器已關閉,並且無法處理或交付請求。使用apply_async
調用的超時是處理這些錯誤的唯一方法?有另一種方法嗎?
答案是在調用get。它有讓(超時=值)
http://celery.readthedocs.org/en/latest/reference/celery.result.html
爲了處理時間者側使用軟/硬時限:http://celery.readthedocs.org/en/latest/userguide/workers.html#time-limits
它會引發錯誤如果任務超出限制。然後,你可以捕獲這個異常:
try:
task.apply_async().get()
except TimeLimitExceeded as err:
pass
爲了趕上TimeError在客戶端,使用get(超時=值)的相同。
try:
task.apply_async().get(timeout=90)
except TimeoutError as err:
pass