我使用以下命令创建一个工作者:
celery -A proj worker -l info --concurrency=50 -Q celery,token_1 -n token_1
在我的任务中,我将速率限制设置为4000/m
。
然而,当我开始运行集合时,我注意到处理的平均任务大约为10-20/s
(启用了速率限制规则4000/m
(。然后,我取消了速率限制规则,现在任务速率变为60/s左右。
我很困惑,因为我的费率限制是4000/m
,相对来说是65/s
。为什么它最终只是10-20/s
?????(我已经为工人设置了50个线程……(
您误解了芹菜的限速操作方式根据4.2版文件:
可以通过在值后添加"/s">`、"/m">或的"/h">,以秒、分钟或小时为单位指定速率限制。任务将在指定的时间范围内平均分配。
示例:
“100/m”
(每分钟100个任务(。这将强制在同一工作实例上启动两个任务之间至少延迟600ms。
从本质上讲,芹菜在您的任务之间增加了强制延迟。由于每个任务已经在大约16毫秒(1/60秒(内完成处理,因此在任务之间再增加16毫秒的强制延迟会降低它们的处理速度。