我正在运行一个Django网站,我使用Celery来实现预防性缓存 - 也就是说,即使在用户请求之前,我也会计算并缓存结果。
然而,在某些情况下,我的一个Celery任务可以被调用很多(实际上我说比平均完成的速度快得多)。我想对它进行速率限制,以便它在消耗大量资源时实际上并没有那么有用。
但是,我想首先了解如何强制执行Celery的celery.task.base.Task.rate_limit属性。任务被拒绝了吗?它们是否延迟并在以后执行?
提前致谢!
答案 0 :(得分:16)
速率限制任务永远不会被删除,它们在工作者内部排队,以便在允许它们运行时立即执行。
令牌桶算法没有指定丢弃数据包的任何内容(这是一个选项,但Celery不这样做。)