Ограничение скорости API Python — как ограничить вызовы API по всему мируPython

Программы на Python
Ответить
Anonymous
 Ограничение скорости API Python — как ограничить вызовы API по всему миру

Сообщение Anonymous »

Я пытаюсь ограничить вызовы API в своем коде. Я уже нашел хорошую библиотеку Pythonratelimiter==1.0.2.post0
https://pypi.python.org/pypi/ratelimiter

Однако эта библиотека может ограничивать скорость только в локальной области. т. е. в функциях и циклах

Код: Выделить всё

# Decorator
@RateLimiter(max_calls=10, period=1)
def do_something():
pass

# Context Manager
rate_limiter = RateLimiter(max_calls=10, period=1)

for i in range(100):
with rate_limiter:
do_something()
Поскольку у меня есть несколько функций, которые выполняют вызовы API в разных местах, я хочу ограничить вызовы API в глобальной области.

Например, предположим, что я хочу ограничить вызов API одним разом в секунду. Предположим, у меня есть функции x и y, в которых выполняются два вызова API.

Код: Выделить всё

@rate(...)
def x():
...

@rate(...)
def y():
...
Украсив функции ограничителем, я могу ограничить скорость для двух функций.

Однако, если я выполняю две вышеупомянутые функции последовательно, он теряет учет количества вызовов API в глобальной области, поскольку они не знают друг друга. Таким образом, y будет вызван сразу после выполнения x, не дожидаясь ни секунды. И это нарушит ограничение один раз в секунду.

Есть ли какой-нибудь способ или библиотека, которую я могу использовать для ограничения скорости глобально в Python?

Подробнее здесь: https://stackoverflow.com/questions/407 ... s-globally
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»