我需要以不同的行为在不同的链中执行相同的任务。对于链A,我想限制重新启动的次数,因此我在声明任务本身时指定此参数。
从链B调用任务时如何覆盖max_retries选项,以使任务无限期地重新启动?
@shared_task(bind=True, max_retries=1)
task(args):
pass
B = chain(task.s(args).set(max_retries=None), task2...)
为什么我认为应该起作用?
You can’t define options with s(), but a chaining set call takes care of that
放弃之前尝试重试的最大次数。如果 重试次数超过此值MaxRetriesExceededError 将会引发异常。默认值为3。None值将为 禁用重试限制,任务将永远重试直到它 成功。
预期: 链B中的任务无限期重启
实际结果: B链中的任务重新启动1次