Quand je frappe l'API Twitter, j'utilise tweepy parce que c'est facile, La gestion des erreurs est étonnamment difficile.
Je l'utilise assez souvent, donc je vais le laisser comme mémo.
Lorsque vous recevez beaucoup de tweets en boucle
Je veux juste ramener cette différence.
Donc, en gros, je fais ce qui suit: ↓
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('Erreur: attendez 15 minutes')
#Affiche l'heure à laquelle le traitement s'est arrêté même s'il a attendu 15 minutes.
print(datetime.datetime.now().strftime("%Y/%m/%d %H:%M:%S"))
time.sleep(60 * 15)
else:
break
Addendum
Ce serait bien si ce type de traitement suffisait, Il semble qu'il y avait un moyen de le spécifier officiellement. http://docs.tweepy.org/en/latest/api.html Je vous l'ai dit dans la section des commentaires. Merci beaucoup.
** e ** était déroutant.
print(e)
↓
[{'message': 'Rate limit exceeded', 'code': 88}]
D'après le résultat, cela ressemble à un tableau associatif à première vue.
** Mais ce n'était pas le cas. ** **
print(e.reason)
print(str(e.reason))
↓
[{'message': 'Rate limit exceeded', 'code': 88}]
<class 'str'>
e.reason était une chaîne! Autrement dit, la chaîne [{'message': 'Limite de débit dépassée', 'code': 88}]!
Voilà pourquoi
if e.reason == "[{'message': 'Rate limit exceeded', 'code': 88}]":
...
Il s'agit d'un traitement tel que.
Je suis ravi de vous aider.
Recommended Posts