我在Celery中有一个任务,在正常运行的情况下可能会运行10000秒。然而,我剩下的所有任务都应该在不到一秒钟的时间内完成。如何在不更改短时间运行任务的时间限制的情况下为有意长时间运行的任务设置时间限制?
您可以在定义任务或调用时设置任务时间限制(硬和/或软)。
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)
这是一个特定任务的decorator和Celery 3.1.23的示例,使用soft_time_limit=10000
@task(bind=True, default_retry_delay=30, max_retries=3, soft_time_limit=10000)
def process_task(self, task_instance):
"""Task processing."""
pass