60

我在 Celery 中有一个任务,在正常运行时可能会运行 10,000 秒。但是,我的所有其他任务都应该在不到一秒钟的时间内完成。如何在不更改短期运行任务的时间限制的情况下为故意长时间运行的任务设置时间限制?

4

2 回答 2

82

您可以在定义任务或调用时设置任务时间限制(和/或软)。

from celery.exceptions import SoftTimeLimitExceeded

@celery.task(time_limit=20)
def mytask():
    try:
        return do_work()
    except SoftTimeLimitExceeded:
        cleanup_in_a_hurry()

或者

mytask.apply_async(args=[], kwargs={}, time_limit=30, soft_time_limit=10)
于 2012-07-26T21:10:08.027 回答
13

这是一个使用soft_time_limit =10000的特定任务和 Celery 3.1.23 的装饰器示例

@task(bind=True, default_retry_delay=30, max_retries=3, soft_time_limit=10000)
def process_task(self, task_instance):
   """Task processing."""
        pass
于 2016-08-12T06:50:08.773 回答