Тайм-аут при использовании urllib2.urlopen с Django в GAE - PullRequest
2 голосов
/ 29 января 2010

Когда я запускаю этот код

url = ('http://maps.google.com/maps/nav?'+
       'q=from%3A'+from_address+
       '+to%3A'+to_address+
       '&output=json&oe=utf8&key='+api_key)
request = urllib2.Request(url)
response = urllib2.urlopen(request)

В простом представлении в Django, запущенном в Google App Engine через Google App Engine Helper для Django , я получаю исключение ApplicationError: 2 timed out, но когда я запускаю тот же код в оболочке Python или Django, это работает просто хорошо.

Есть идеи, что происходит? Спасибо!

Ответы [ 2 ]

2 голосов
/ 06 марта 2010

Это связано с тем, что для App Engine по умолчанию установлено время ожидания 5 секунд для этих вызовов. Если вы используете UrlFetch [1], вы можете использовать параметр deadline, чтобы установить время ожидания максимум до 10 секунд. Если страница, которую вы пытаетесь получить, занимает больше времени, вам не повезло.

[1] http://code.google.com/appengine/docs/python/urlfetch/fetchfunction.html

1 голос
/ 03 мая 2014

вы можете избежать 10-секундного крайнего срока, используя службу асинхронной выборки Google, которая принимает крайние сроки до 60 секунд. https://developers.google.com/appengine/docs/python/urlfetch/asynchronousrequests

...