2

基于这个问题:

超过 Django Celery 时间限制?

我有一些可能会运行一段时间的任务。但是,大多数任务不应该花费超过几秒钟的时间。我不想设置全局超时来解决那些长时间运行的任务。相反,我希望有一个较短的全局硬时间限制,并手动调整我需要更长超时的任务。

当用@task 装饰任务时,我做了@task(timeout=None),但是,该任务仍然达到300 秒的超时。我用 task_function.delay(args) 调用了这个任务。

有没有办法调用任务并自定义它的超时?

4

2 回答 2

3

此问题解决了您可以调用具有自定义超时的任务的情况。它在issue802 分支中实现,但尚未在 master 中。您可以将其与 master 合并并使用所需的功能。

使用此补丁,您可以在调用任务时传递超时。

tasks.add.apply_async(args=[1,2], soft_timeout=2, timeout=5)

于 2012-07-04T10:30:43.063 回答
2

你运行的是什么版本的芹菜?当前稳定的文档列表time_limit作为设置任务超时的正确参数,如果没有提供时间限制,将使用工作人员默认值。要在任务上设置长时间(例如 60 分钟)超时,您可以使用:

@task(time_limit=3600)
def mytask():
    ...

或者,您可以在调用任务时使用 apply_async 更改时间限制:

mytask.apply_async(time_limit=3600, args=args)
于 2012-07-03T01:47:15.097 回答