Я больше месяца без проблем запускаю задание cron в Google App Engine.Эта работа делает множество вещей, одна из которых заключается в том, что она использует urllib2 для вызова, чтобы получить ответ json от Reddit, а также от нескольких других сайтов.Около двух недель назад я начал видеть ошибки при вызове Reddit, но никаких ошибок при вызове других сайтов.Я получаю ошибку HTTP error 429.
Я пытался выполнить тот же код за пределами Google App Engine, и у меня нет проблем.Я пытался использовать urlFetch, но получаю ту же ошибку.
Вы можете увидеть ошибку, когда используете интерактивную оболочку движка приложения со следующим кодом.
import urllib2
data = urllib2.urlopen('http://www.reddit.com/r/Music/.json', timeout=60)
РедактироватьНе уверен, почему это всегда терпит неудачу для меня, а не кого-то еще.Это ошибка, которую я получаю:
>>> 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
аналогичный код, работающий вне движка приложения без проблем:
print urllib2.urlopen('http://www.reddit.com/r/Music/.json').read()
Сначала я подумал, что это связано с проблемой тайм-аута, так какПервоначально он работал, но так как нет ошибки тайм-аута, а странного кода HttpError, я не уверен.Есть идеи?