基于这个问题:
Django Celery Time Limit Exceeded?
我有一些任务可能会运行一段时间。但是,大多数任务不应该花费超过几秒钟。我不想将全局超时设置为考虑那些长时间运行的任务。相反,我希望有一个简短的全局硬时限,并手动调整我需要更长时间超时的任务。
当用@task装饰任务时,我做了@task(超时=无)但是,该任务仍然达到300秒的超时。我用task_function.delay(args)调用了这个任务。
有没有办法调用任务并自定义它的超时?
答案 0 :(得分:3)
This issue解决了您可以使用自定义超时调用任务的情况。它在issue802 branch中实现,但尚未掌握。您可以将其与master合并并使用所需的功能。
使用此补丁,您可以在调用任务时传递超时。
tasks.add.apply_async(args = [1,2],soft_timeout = 2,timeout = 5)
答案 1 :(得分:2)
你在运行什么版本的芹菜? current stable docs列表time_limit
作为设置任务超时的正确参数,如果没有提供时间限制,将使用工作者默认值。要为您可以使用的任务设置长时间(例如60分钟)超时:
@task(time_limit=3600)
def mytask():
...
或者,您可以使用apply_async更改调用任务时的时间限制:
mytask.apply_async(time_limit=3600, args=args)