Tag: 芹菜芹菜

了解芹菜任务预取

我刚刚发现了configuration选项CELERYD_PREFETCH_MULTIPLIER ( docs )。 默认是4,但(我相信)我想要预取或尽可能低。 我把它设置为1,这足够接近我正在寻找的东西,但还是有一些我不明白的东西: 为什么这个预取是一个好主意? 我真的不明白这个原因,除非消息队列和工作者之间有很多延迟(在我的情况下,他们当前运行在同一台主机上,最坏的情况是最终可能会在不同的主机上运行相同的数据中央)。 文件只提到缺点,但没有解释优点是什么。 许多人似乎把这个设置为0,期望能够以这种方式closures预取(我认为是合理的假设)。 但是,0意味着无限预取。 为什么有人会想要无限预取,不是完全消除了首先为任务队列引入的并发/asynchronous性? 为什么预取不能closures? 在大多数情况下,closures性能可能不是一个好主意,但是有没有技术上的原因使得这是不可能的? 还是只是没有实施? 有时候,这个选项连接到CELERY_ACKS_LATE 。 例如。 罗杰·胡(Roger Hu )通常写道: “用户真正想要的是让一个工人只保留subprocess的许多任务。 但是,如果没有启用迟到的承认,这是不可能的[…]»我不明白这两个选项是如何连接的,为什么没有另一个选项是不可能的。 另外提到的连接可以在这里find。 有人可以解释为什么这两个选项连接?