2017-07-11 37 views
1

您能解释我必须使用什么:task_reject_on_worker_losttask_acks_late以及它们有何不同? 为什么Celery在task_acks_late为True的异常之后不会再次运行任务?Celery的task_reject_on_worker_lost和task_acks_late之间有什么不同

芹菜文档:

即使启用task_acks_late,工作人员将确认任务时突然执行他们的工作进程退出

是什么意思“突然退出”?会引发异常吗?

当芹菜重任务时task_acks_lateTruetask_reject_on_worker_lostTrue

回答

1

如果您希望在异常后重试,可以将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

你应该能够没有问题同时使用这两种设置。

相关问题