我使用多个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