用芹菜设置特定任务的时间限制

时间:2012-07-26 14:59:05

标签: celery celeryd

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

2 个答案:

答案 0 :(得分:57)

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

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)

答案 1 :(得分:9)

这是使用 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