2014-08-31 60 views
1

我使用多個task.apply_async()task.get()對服務器進行異步調用,並使客戶端等待結果。這些任務可能需要不同的時間才能返回從1分鐘到3分鐘完成的結果。如何處理芹菜中的TimeoutError

我想檢測任務何時得到TimeError,因爲服務器已關閉,並且無法處理或交付請求。使用apply_async調用的超時是處理這些錯誤的唯一方法?有另一種方法嗎?

回答

0
  1. 者側

爲了處理時間者側使用軟/硬時限: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