预取可以提高性能。工人无需等待来自代理的下一条消息即可处理。与代理进行一次通信并处理大量消息可提高性能。与本地内存访问相比,从代理(甚至从本地代理)获取消息的成本很高。还允许工人分批确认消息
将预取设置为零意味着“没有特定限制”,而不是无限
据记载,将预取设置为1等同于将其关闭,但这并非总是如此(请参阅: 只是警告:在对Redis经纪人+ Celery 3.1.15进行测试时,我阅读的有关CELERYD_PREFETCH_MULTIPLIER = 1禁用预取的所有建议显然都是错误的。
为了证明这一点:
开始在Redis中观察任务队列的长度: watch redis-cli -c llen default
开始 celery worker -c 1
请注意,Redis中的队列长度将立即从5降至3``CELERYD_PREFETCH_MULTIPLIER = 1
`不会阻止预取,它只是将预取限制为每个队列1个任务。
-Ofair
,尽管文档中说什么,也不会阻止预取。