Warum gibt Contextmanager einen Laufzeitfehler aus: „Generator wurde nach throw() nicht gestoppt“?Python

Python-Programme
Anonymous
 Warum gibt Contextmanager einen Laufzeitfehler aus: „Generator wurde nach throw() nicht gestoppt“?

Post by Anonymous »

In meiner Utility.py habe ich:

Code: Select all

@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
In meiner task.py rufe ich auf:

Code: Select all

for date in interval:
with utility.rate_limit_protection():
stats = account.get_insights(params=params)
Nachdem die Aufgabe für einen bestimmten Datumsbereich ausgeführt wurde, wartet das Programm 300 Sekunden, sobald das Facebook-Ratenlimit in Kraft tritt, und schlägt dann mit der Fehlermeldung fehl.

Code: Select all

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

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post