我正在使用文档中的方法为我的任务使用@task装饰器,但它完全忽略了这一点,并在300秒时超时。
@task(time_limit=333333)
def process:
正如你所看到的,硬极限达到了300秒。
[2015-02-25 02:12:03,205: ERROR/MainProcess] Task celery.local.process[982190a3-6c47-4e6d-8695-1c065cd05723] raised unexpected: TimeLimitExceeded(300,)
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/billiard/pool.py", line 640, in on_hard_timeout
raise TimeLimitExceeded(job._timeout)
TimeLimitExceeded: TimeLimitExceeded(300,)
[2015-02-25 02:12:03,205: ERROR/MainProcess] Hard time limit (300s) exceeded for celery.local.process[982190a3-6c47-4e6d-8695-1c065cd05723]
[2015-02-25 02:12:08,404: ERROR/MainProcess] Process 'Worker-1' pid:13888 exited with 'signal 9 (SIGKILL)'
我想将硬限制设置为一个大值,而不是让它神秘地恢复到300。
我很确定您也需要设置soft_time_limit
:
@task(time_limit=333333, soft_time_limit=333333)
def process:
软时间限制将触发一个您可以捕获的异常,后者将终止作业。