我正在运行一个Django网站,使用Celery实现预防性缓存——也就是说,我会在用户请求之前计算和缓存结果。
然而,我的某个Celery任务在某些情况下可能被频繁调用(实际上比平均完成时间稍微快一些)。 我想将其限制速度,以便在实际上并没有太多用处时不会消耗过多的资源。
但首先,我想了解Celery的celery.task.base.Task.rate_limit属性是如何执行的。 任务会被拒绝吗? 它们会被延迟并稍后执行吗?
提前感谢!
然而,我的某个Celery任务在某些情况下可能被频繁调用(实际上比平均完成时间稍微快一些)。 我想将其限制速度,以便在实际上并没有太多用处时不会消耗过多的资源。
但首先,我想了解Celery的celery.task.base.Task.rate_limit属性是如何执行的。 任务会被拒绝吗? 它们会被延迟并稍后执行吗?
提前感谢!
对于受速率限制的任务,它们从不会被丢弃,而是在工作进程内部排队,以便它们一旦允许运行就会立即执行。
令牌桶算法并没有规定丢弃数据包(这是一种选项,但Celery不会这样做)。