Чтобы обернуть запросы, вы можете использовать Adapter Pattern. Что-то вроде этого:
class RequestLimiter:
def __init__(self):
self.count = 0
def get(self, *args, **kwargs):
if self.count == 30:
time.sleep(60)
self.count = 0
return requests.get(*args, **kwargs)
else:
self.count += 1
requests.get(*args, **kwargs)
def main():
# If this is through your whole program,
# you might want to make this global- be careful with that!
r = RequestLimiter()
r.get(url, args)
В зависимости от ваших требований вы можете изменить часть этого. Например, поскольку он закодирован, ваш счет будет увеличиваться независимо от того, будет ли ваш get
успешным или неудачным. Это может быть или не быть тем, что вы хотите. Если вы решите создать глобальный экземпляр этого класса, вам придется беспокоиться о параллельном доступе к переменной count
(если вы используете параллелизм).
'time.sleep (60)' ... –