如何在Celery中强制执行rate_limit?

Tho*_*zco 6 python django queue asynchronous celery

我正在运行一个Django网站,我使用Celery来实现预防性缓存 - 也就是说,即使在用户请求之前,我也会计算和缓存结果.

但是,在某些情况下,我的一个Celery任务可能会被调用很多(实际上我说比平均完成的速度要快得多).我想对它进行速率限制,以便它实际上没那么有用时不会消耗大量资源.

但是,我想首先了解如何强制执行Celery的celery.task.base.Task.rate_limit属性.任务被拒绝了吗?它们是否延迟并在以后执行?

提前致谢!

ask*_*sol 16

速率受限的任务永远不会被丢弃,它们在工作者内部排队,以便在允许它们运行时立即执行.

令牌桶算法没有指定丢弃数据包的任何内容(这是一个选项,但Celery不这样做).