芹菜中的task_reject_on_worker_lost和task_acks_late有什么区别



你能解释一下我必须使用什么:task_reject_on_worker_losttask_acks_late以及它们有何不同吗? 为什么芹菜在异常后不再次运行任务,当task_acks_late为 True 时?

在芹菜文档中:

即使启用了task_acks_late,当执行任务的工作进程突然退出任务时,工作线程也会确认任务

"突然退出"是什么意思?会提出例外吗?

当 Celery 在Truetask_acks_latetask_reject_on_worker_lostTrue时重试任务时?

如果您希望它在异常后重试,您可以将 args 传递给装饰器。

@app.task(max_retries=10)
def task(*args, **kwargs):
#stuff

突然退出是指工人被杀,而不是例外。如果使用task_acks_late则工作人员将在任务结束时而不是开始时从队列中删除该项目。但是,如果工作进程被终止,即使任务未完成,仍会确认任务。 如果发生上述事件,task_reject_on_worker_lost将重新排队邮件,因此您不会丢失任务。

来源: http://docs.celeryproject.org/en/latest/userguide/configuration.html#std:setting-task_reject_on_worker_lost

http://docs.celeryproject.org/en/latest/userguide/configuration.html#task-acks-late

您应该能够同时使用这两个设置,而不会出现问题。

相关内容

  • 没有找到相关文章

最新更新