Wenn ich auf die Twitter-API klicke, verwende ich tweepy, weil es einfach ist, Die Fehlerbehandlung ist unerwartet schwierig.
Ich benutze es ziemlich oft, also werde ich es als Memo hinterlassen.
Wenn Sie viele Tweets in einer Schleife erhalten
--Warten Sie für das Ratenlimit 15 Minuten und drücken Sie erneut dieselbe API.
Ich möchte nur diesen Unterschied verzweigen.
Im Grunde mache ich folgendes: ↓
import datetime
import time
import tweepy
while True:
try:
data = api.search(...)
break
except tweepy.TweepError as e:
print(e)
if e.reason == "[{'message': 'Rate limit exceeded', 'code': 88}]":
print('Fehler: 15 Minuten warten')
#Zeigt die Zeit an, zu der die Verarbeitung gestoppt wurde, obwohl sie 15 Minuten gewartet hat.
print(datetime.datetime.now().strftime("%Y/%m/%d %H:%M:%S"))
time.sleep(60 * 15)
else:
break
Nachtrag
Es wäre schön, wenn diese Art der Verarbeitung ausreichen würde, Es scheint, dass es eine Möglichkeit gab, es offiziell zu spezifizieren. http://docs.tweepy.org/en/latest/api.html Ich habe es dir im Kommentarbereich gesagt. Vielen Dank.
** e ** war verwirrend.
print(e)
↓
[{'message': 'Rate limit exceeded', 'code': 88}]
Aus dem Ergebnis geht hervor, dass es auf den ersten Blick wie ein assoziatives Array aussieht.
** Aber es war nicht. ** **.
print(e.reason)
print(str(e.reason))
↓
[{'message': 'Rate limit exceeded', 'code': 88}]
<class 'str'>
e.reason war eine Schnur! Das heißt, die Zeichenfolge [{'message': 'Ratenlimit überschritten', 'code': 88}]!
Deshalb
if e.reason == "[{'message': 'Rate limit exceeded', 'code': 88}]":
...
Es verarbeitet wie.
Es ist mir eine Freude, Ihnen zu helfen.
Recommended Posts