DeadlineExceededError:ApplicationError:使用urllib2.urlopen()函数时出现5

| 在我的应用程序中,我使用urllib2.urlopen()函数调用一个api并从该api获取结果,但是效果不佳。有时会显示结果,但有时会出现以下错误:
Traceback (most recent call last):
  File \"/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/__init__.py\", line 700, in __call__
handler.get(*groups)
  File \"/base/data/home/apps/s~malware-app/7.351334968546050391/main.py\", line 505, in get
f = urllib2.urlopen(\'http://whoapi.com/api-v1/?domain=%s&rtype=alexarank&apikey=xyz\'% domain)
  File \"/base/python_runtime/python_dist/lib/python2.5/urllib2.py\", line 124, in urlopen
    return _opener.open(url, data)
  File \"/base/python_runtime/python_dist/lib/python2.5/urllib2.py\", line 381, in open
response = self._open(req, data)
  File \"/base/python_runtime/python_dist/lib/python2.5/urllib2.py\", line 399, in _open
  \'_open\', req)
  File \"/base/python_runtime/python_dist/lib/python2.5/urllib2.py\", line 360, in _call_chain
result = func(*args)
  File \"/base/python_runtime/python_dist/lib/python2.5/urllib2.py\", line 1114, in http_open
return self.do_open(httplib.HTTPConnection, req)
  File \"/base/python_runtime/python_dist/lib/python2.5/urllib2.py\", line 1087, in do_open
r = h.getresponse()
  File \"/base/python_runtime/python_dist/lib/python2.5/httplib.py\", line 197, in getresponse
self._allow_truncated, self._follow_redirects)
  File \"/base/python_runtime/python_lib/versions/1/google/appengine/api/urlfetch.py\", line 260, in fetch
return rpc.get_result()
  File \"/base/python_runtime/python_lib/versions/1/google/appengine/api/apiproxy_stub_map.py\", line 592, in get_result
return self.__get_result_hook(self)
  File \"/base/python_runtime/python_lib/versions/1/google/appengine/api/urlfetch.py\", line 364, in _get_fetch_result
raise DeadlineExceededError(str(err))
DeadlineExceededError: ApplicationError: 5 
我看到了try-except方法,但是对我的代码却没有作用。 我的代码块:
 try:                      
   f = urllib2.urlopen(\'http://whoapi.com/api-v1/?domain=%s&rtype=serverip&apikey=xyzxyz\'% domain)
   ip = f.read()
 except DeadlineExceededError, e:
   self.redirect(\'/error\')
我正在导入:
from google.appengine.runtime import DeadlineExceededError
从stackoverflow我得到它的bcause服务器在指定的时间没有响应,我们可以处理异常..am,但不能执行该操作。 任何帮助,将不胜感激。 谢谢您的帮助     
已邀请:
        URL Fetch请求的默认超时仅为5秒,因此您可能希望直接使用ѭ3来增加超时时间:
from google.appengine.api import urlfetch

try:
    resp = urlfetch.fetch(\'http://whoapi.com/api-v1/?domain=%s&rtype=serverip&apikey=xyzxyz\'% domain, method=urlfetch.GET, deadline=10)
    ip = r.content
except urlfetch.DownloadError:
    self.redirect(\'/error\')
如果始终发现超出限制,请考虑使用异步请求或将逻辑移至任务队列。     
        如您所说,发生错误是因为您没有及时得到答复,并且请求超出了其期限。 您可以做的是将请求移到任务队列中,因为任务可以运行更长的时间。 至于捕获异常,您是否尝试过在self.redirect之后添加return语句?     

要回复问题请先登录注册