我有一个简单的结构:
项目
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
任务。但是我可以运行任意多次。怎么了?
答案 0 :(得分:1)
来自Celery Docs:
请注意,这是每个工作人员实例的速率限制,而不是全局速率限制。要实施全局速率限制(例如,对于每秒最大请求数的API),您必须限制为给定队列。