如何在Celery中强制执行rate_limit?
问题描述:
我正在运行一个Django网站,在那里我使用Celery实现预防性缓存 - 也就是说,我甚至在用户请求之前计算并缓存结果。如何在Celery中强制执行rate_limit?
但是,在某些情况下,我的一项Celery任务可能会被称为很多(实际上,我认为它比平均完成速度更快)。我想rate_limit它,以便它不会消耗大量的资源时,它实际上没有用。
但是,我想先了解Celery的celery.task.base.Task.rate_limit属性是如何执行的。任务被拒绝了吗?他们迟到并被处决了吗?
在此先感谢!
答
费率有限的任务永远不会丢失,它们在工作人员内部排队,以便在允许他们运行时立即执行。
令牌桶算法没有指定丢弃数据包的任何内容(这是一个选项,但芹菜不这样做)。