2014-08-31 59 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