如何处理芹菜中的TimeoutError

时间:2014-08-31 21:24:17

标签: python celery

我使用多个task.apply_async()task.get()对服务器进行异步调用,并使客户端等待结果。这些任务可能需要不同的时间才能返回从1分钟到3分钟完成的结果。

我想检测任务何时获得TimeError,因为服务器已关闭且请求无法处理或传递。使用apply_async调用超时是处理这些错误的唯一方法吗?还有另一种方式吗?

2 个答案:

答案 0 :(得分:1)

答案是在电话中获取。它有get(timeout = value)

http://celery.readthedocs.org/en/latest/reference/celery.result.html

答案 1 :(得分:1)

  1. 工人方
  2. 处理时间工作人员使用软/硬时间限制:http://celery.readthedocs.org/en/latest/userguide/workers.html#time-limits

    如果任务超出限制,则会引发错误。然后你可以捕获这个例外:

    try:
        task.apply_async().get()
    except TimeLimitExceeded as err:
        pass
    
    1. 客户端
    2. 要在客户端捕获TimeError,请按说明使用get(timeout = value)。

      try:
        task.apply_async().get(timeout=90)
      except TimeoutError as err:
         pass