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 одним разом в секунду. Предположим, у меня есть функции x и y, в которых выполняются два вызова API.
Код: Выделить всё
@rate(...)
def x():
...
@rate(...)
def y():
...
Однако, если я выполняю две вышеупомянутые функции последовательно, он теряет учет количества вызовов API в глобальной области, поскольку они не знают друг друга. Таким образом, y будет вызван сразу после выполнения x, не дожидаясь ни секунды. И это нарушит ограничение один раз в секунду.
Есть ли какой-нибудь способ или библиотека, которую я могу использовать для ограничения скорости глобально в Python?
Подробнее здесь: https://stackoverflow.com/questions/407 ... s-globally
Мобильная версия