4. 任务限速Rate Limits

Celery真的有好多实用的特性,譬如今天学习的速率限制Rate Limits:

我们在很多应用场景下可能需要对某些优先级不太高的任务进行限速,否则当此类任务产生的速度过快时,导致worker疲于奔命,从而导致高优先级的任务被饿死;此时Rate Limits就可以起作用了,我们可以给每个任务设置它们的rate limit,限制它们在一秒、一分或者一小时内能被每个worker处理的最大次数;

注意,rate limit是限制任务能被每个worker在某个时间间隔内处理的最大次数,一开始我以为可以限制任务在指定时间间隔内能被处理的最大次数(不论worker数量有多少),经过测试和看官方文档,发现并不是这样的!这两者的区别在于,如果rate limit为10/m,即每分钟10次,如果worker数量为n,那么每分钟内其实该任务可以被处理的最大次数为10n;如果我们希望不管worker数量为多少,该任务最多只能执行10次,那么通过rate limit是无法实现的!

我在测试过程中发现,rate limits的确有限速作用,但是好像精确度不够,譬如设置rate limits为10/m,单个worker在每分钟内执行该任务的次数可能超过10次,测试代码如下:

from celery import Celery

app = Celery('tasks',
             backend='amqp://agent:agent@172.18.231.134:5672
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值