rate_limit不起作用的芹菜

时间:2018-08-11 19:08:57

标签: python python-3.x celery

我有一个简单的结构:

  • 项目

    • celery.py
    • tasks.py
  • run_tasks.py

celery.py:

from __future__ import absolute_import, unicode_literals
from celery import Celery

app = Celery('proj',
         broker='amqp://',
         backend='amqp://',
         include=['proj.tasks'])

app.conf.update(
  result_expires=3600,
  task_annotations={
    'proj.tasks.add': {'rate_limit': '2/m'}
 }
)

tasks.py:

from __future__ import absolute_import, unicode_literals
from .celery import app


@app.task
def add(x, y):
   return x + y

run_tasks.py:

 from proj.tasks import *

 res = add.delay(4,4)
 a = res.get()
 print(a)

根据参数{'rate_limit': '2/m'},我每分钟只能运行2次add任务。但是我可以运行任意多次。怎么了?

1 个答案:

答案 0 :(得分:1)

来自Celery Docs

  

请注意,这是每个工作人员实例的速率限制,而不是全局速率限制。要实施全局速率限制(例如,对于每秒最大请求数的API),您必须限制为给定队列。