Erreur 429 lors de l'invoquer l'API Reddit à partir de Google App Engine
-
12-11-2019 - |
Question
J'exécute un travail CRON sur Google App Engine depuis plus d'un mois maintenant sans aucun problème. Le travail fait une variété de choses, l'une étant qu'elle utilise Urllib2 pour passer un appel pour récupérer une réponse JSON de Reddit ainsi que quelques autres sites. Il y a environ deux semaines, j'ai commencé à voir des erreurs lors de l'invoquer Reddit, mais pas d'erreurs lors de l'invoquer les autres sites. L'erreur que je reçois est l'erreur HTTP 429.
J'ai essayé d'exécuter le même code en dehors de Google App Engine et je n'ai aucun problème. J'ai essayé d'utiliser URLFetch, mais je reçois la même erreur.
Vous pouvez voir l'erreur lorsque vous utilisez l'application Shell interactif du moteur avec le code suivant.
import urllib2
data = urllib2.urlopen('http://www.reddit.com/r/Music/.json', timeout=60)
Edit: Je ne sais pas pourquoi cela échoue toujours pour moi et pas quelqu'un d'autre. C'est l'erreur que je reçois:
>>> import urllib2
>>> data = urllib2.urlopen('http://www.reddit.com/r/Music/.json', timeout=60)
Traceback (most recent call last):
File "/base/data/home/apps/s~shell-27/1.356011914885973647/shell.py", line 267, in get
exec compiled in statement_module.__dict__
File "<string>", line 1, in <module>
File "/base/python27_runtime/python27_dist/lib/python2.7/urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "/base/python27_runtime/python27_dist/lib/python2.7/urllib2.py", line 400, in open
response = meth(req, response)
File "/base/python27_runtime/python27_dist/lib/python2.7/urllib2.py", line 513, in http_response
'http', request, response, code, msg, hdrs)
File "/base/python27_runtime/python27_dist/lib/python2.7/urllib2.py", line 438, in error
return self._call_chain(*args)
File "/base/python27_runtime/python27_dist/lib/python2.7/urllib2.py", line 372, in _call_chain
result = func(*args)
File "/base/python27_runtime/python27_dist/lib/python2.7/urllib2.py", line 521, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 429: Unknown
Code similaire en dehors du moteur de l'application sans problème:
print urllib2.urlopen('http://www.reddit.com/r/Music/.json').read()
Au début, je pensais que cela avait à voir avec un problème de délai d'expiration car il fonctionnait à l'origine, mais comme il n'y a pas d'erreur de délai d'expiration mais un code httperror étrange, je ne suis pas sûr. Des idées?
Pas de solution correcte