我使用多个task.apply_async()
和task.get()
对服务器进行异步调用,并使客户端等待结果。这些任务可能需要不同的时间才能返回从1分钟到3分钟完成的结果。
我想检测任务何时获得TimeError
,因为服务器已关闭且请求无法处理或传递。使用apply_async
调用超时是处理这些错误的唯一方法吗?还有另一种方式吗?
答案 0 :(得分:1)
答案是在电话中获取。它有get(timeout = value)
http://celery.readthedocs.org/en/latest/reference/celery.result.html
答案 1 :(得分:1)
处理时间工作人员使用软/硬时间限制:http://celery.readthedocs.org/en/latest/userguide/workers.html#time-limits
如果任务超出限制,则会引发错误。然后你可以捕获这个例外:
try:
task.apply_async().get()
except TimeLimitExceeded as err:
pass
要在客户端捕获TimeError,请按说明使用get(timeout = value)。
try:
task.apply_async().get(timeout=90)
except TimeoutError as err:
pass