В моей утилите.py у меня есть,
@contextmanager
def rate_limit_protection(max_tries=3, wait=300):
tries = 0
while max_tries > tries:
try:
yield
break
except FacebookRequestError as e:
pprint.pprint(e)
if e._body['error']['message'] == '(#17) User request limit reached':
print("waiting...")
time.sleep(wait)
tries += 1
В моем task.py я вызываю:
for date in interval:
with utility.rate_limit_protection():
stats = account.get_insights(params=params)
После запуска задачи для заданного диапазона дат, когда срабатывает ограничение скорости Facebook, программа ждет 300 секунд, после чего происходит сбой с ошибкой.
File "/Users/kamal/.pyenv/versions/3.4.0/lib/python3.4/contextlib.py", line 78, in __exit__
raise RuntimeError("generator didn't stop")
RuntimeError: generator didn't stop
rate_limit_protection
будет многократно запускать тело оператораwith
?with
этого не делает. Тело работает один раз. - person user2357112 supports Monica   schedule 13.01.2016for date in interval: with utility.rate_limit_protection(): stats = account.get_insights(params=params)
Я отредактировал вопрос. Теперь вы можете получить некоторое представление о том, что я пытаюсь сделать. - person kamal patwa   schedule 14.01.2016