я ищу способ ограничить, когда функция вызывается, но только тогда, когда входные параметры различны, то есть:сельдерей: ограничение скорости задач с теми же параметрами
@app.task(rate_limit="60/s")
def api_call(user):
do_the_api_call()
for i in range(0,100):
api_call("antoine")
api_call("oscar")
Так что я хотел бы api_call("antoine")
будет называться 60 раз в секунду и api_call("oscar")
60 раз в секунду также.
Любая помощь в том, как я могу это сделать?
--EDIT 27/04/2015 Я попытался вызвать подзадачу с переменной rate_limit внутри задачи, но она тоже не работает: Rate_limit всегда применяется для всех созданных подзадач или задач (что логично).
@app.task(rate_limit="60/s")
def sub_api_call(user):
do_the_api_call()
@app.task
def api_call(user):
sub_api_call(user)
for i in range(0,100):
api_call("antoine")
api_call("oscar")
Лучшее!
Не можете просто использовать @ app.task (rate_limit = 60) декоратор по методу? – reptilicus
Ну, я так не думаю, так как это ограничит как api_call («antoine»), так и api_call («Oscar») @ 30/s, и я хочу, чтобы ограничение применялось для каждого параметра, а не для каждой функции. – antoinet
Коррекция, я хочу, чтобы ограничение применялось не только для каждой функции, но и для каждого параметра. – antoinet