Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何禁用芹菜中任务的重新交付(使用redis)?_Python_Redis_Celery - Fatal编程技术网

Python 如何禁用芹菜中任务的重新交付(使用redis)?

Python 如何禁用芹菜中任务的重新交付(使用redis)?,python,redis,celery,Python,Redis,Celery,我是否可以将芹菜配置为在工作人员非正常关机的情况下直接放弃任务?对我来说,更重要的是不要重复任务,而不是总是交付任务 如报告中所述: 如果在可见性超时内未确认任务,则该任务将重新交付给另一个工作进程并执行 这会导致ETA/倒计时/重试任务出现问题,执行时间超过可见性超时;事实上,如果发生这种情况,它将再次执行,并在一个循环中再次执行 因此,您必须增加可见性超时,以匹配您计划使用的最长ETA的时间 我的使用案例是,我使用了1天的可见性\u超时,但在某些情况下,这还不够-我希望在将来进一步安排任务。

我是否可以将芹菜配置为在工作人员非正常关机的情况下直接放弃任务?对我来说,更重要的是不要重复任务,而不是总是交付任务

如报告中所述:

如果在可见性超时内未确认任务,则该任务将重新交付给另一个工作进程并执行

这会导致ETA/倒计时/重试任务出现问题,执行时间超过可见性超时;事实上,如果发生这种情况,它将再次执行,并在一个循环中再次执行

因此,您必须增加可见性超时,以匹配您计划使用的最长ETA的时间

我的使用案例是,我使用了1天的
可见性\u超时
,但在某些情况下,这还不够-我希望在将来进一步安排任务。“电源故障”或任何其他导致非正常关机的事件是非常罕见的,我可以接受任务被丢弃的情况,比如说,0.01%的情况。此外,比预期晚执行1天的任务与根本没有运行的任务一样糟糕


一个明显的、有点老套的方法是将可见性超时设置为100年。有更好的方法吗?

有一个
acks\u late
配置,但是默认值是
false
(因此请确保您没有启用它):

当您需要完成任务时,将使用acks_late设置 如果工作进程(由于某种原因)在执行过程中崩溃,则再次执行。 重要的是要注意,不知道工人是否会崩溃,如果 这通常是一个不可恢复的错误,需要人工干预吗 干预(工作程序中的错误或任务代码)

(引自)


可以找到
task\u acks\u late
(似乎名称在某些不匹配的最新版本中已更改)的定义。

好的一面是,可以为每个任务以及全局设置acks\u late。