在GAE中使用Django的urllib2.urlopen时超时
当我运行这段代码时
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 Helper for Django在谷歌应用引擎上运行,结果出现了一个ApplicationError: 2 timed out
的错误。但是当我在Python或Django的命令行中运行同样的代码时,一切都正常。
有人知道这是怎么回事吗?谢谢!
2 个回答
1
你可以通过使用谷歌的异步获取服务来避免10秒的限制,这个服务允许你设置最长可以达到60秒的时间限制。https://developers.google.com/appengine/docs/python/urlfetch/asynchronousrequests
2
这是因为App Engine对这些请求有一个默认的超时时间,设定为5秒。如果你使用UrlFetch [1],可以通过deadline参数把超时时间设置到最多10秒。如果你想获取的页面超过这个时间,那就没办法了。
[1] http://code.google.com/appengine/docs/python/urlfetch/fetchfunction.html