title: DeadlineExceededError not caught in try catch
body: <p>I recently enclosed a function call inside a try-catch block to catch <a href="https://cloud.google.com/appengine/docs/python/refdocs/google.appengine.api.urlfetch_errors" rel="nofollow">all URL Fetch</a> exceptions but as per logs below it did not get caught. </p>
  
  <pre><code>from google.appengine.api import urlfetch_errors 
  :: 
  :: 
  try: 
      gitkit_user     = gitkit_instance.VerifyGitkitToken (self.request.cookies['gtoken']) 
  except ( urlfetch_errors.DeadlineExceededError, urlfetch_errors.ConnectionClosedError, urlfetch_errors.DNSLookupFailedError, urlfetch_errors.DownloadError, urlfetch_errors.Error, urlfetch_errors.InternalTransientError, urlfetch_errors.InvalidMethodError, urlfetch_errors.InvalidURLError, urlfetch_errors.MalformedReplyError, urlfetch_errors.PayloadTooLargeError, urlfetch_errors.ResponseTooLargeError, urlfetch_errors.SSLCertificateError, urlfetch_errors.TooManyRedirectsError ): 
  
      logging.error ("Exception occurred while executing gitkit_instance.VerifyGitkitToken (). \nDetails: "+traceback.format_exc ()) 
  </code></pre>
  
  <p>Error log including trace </p>
  
  <pre><code>The API call urlfetch.Fetch() took too long to respond and was cancelled.
  Traceback (most recent call last):
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1535, in __call__
      rv = self.handle_exception(request, response, e)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1529, in __call__
      rv = self.router.dispatch(request, response)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1278, in default_dispatcher
      return route.handler_adapter(request, response)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1102, in __call__
      return handler.dispatch()
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 572, in dispatch
      return self.handle_exception(e, self.app.debug)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 570, in dispatch
      return method(*args, **kwargs)
    File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/tasklets.py", line 1057, in add_context_wrapper
      return synctaskletfunc(*args, **kwds)
    File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/tasklets.py", line 1038, in synctasklet_wrapper
      return taskletfunc(*args, **kwds).get_result()
    File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/tasklets.py", line 1011, in tasklet_wrapper
      result = func(*args, **kwds)
    File "/base/data/home/apps/s~myapp/1.389163610985502634/main_v3.py", line 29956, in get
      gitkit_user     = gitkit_instance.VerifyGitkitToken (self.request.cookies['gtoken'])
    File "/base/data/home/apps/s~myapp/1.389163610985502634/gitkitclient.py", line 216, in VerifyGitkitToken
      certs = self.rpc_helper.GetPublicCert()
    File "/base/data/home/apps/s~myapp/1.389163610985502634/rpchelper.py", line 159, in GetPublicCert
      resp, content = self.http.request(cert_url, headers=headers)
    File "/base/data/home/apps/s~myapp/1.389163610985502634/httplib2/__init__.py", line 1570, in request
      (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
    File "/base/data/home/apps/s~myapp/1.389163610985502634/httplib2/__init__.py", line 1317, in _request
      (response, content) = self._conn_request(conn, request_uri, method, body, headers)
    File "/base/data/home/apps/s~myapp/1.389163610985502634/httplib2/__init__.py", line 1286, in _conn_request
      response = conn.getresponse()
    File "/base/data/home/runtimes/python27/python27_dist/lib/python2.7/gae_override/httplib.py", line 522, in getresponse
      **extra_kwargs)
    File "/base/data/home/apps/s~myapp/1.389163610985502634/httplib2/__init__.py", line 1089, in fixed_fetch
      validate_certificate=validate_certificate)
    File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/urlfetch.py", line 271, in fetch
      return rpc.get_result()
    File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/apiproxy_stub_map.py", line 613, in get_result
      return self.__get_result_hook(self)
    File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/urlfetch.py", line 378, in _get_fetch_result
      rpc.check_success()
    File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/apiproxy_stub_map.py", line 579, in check_success
      self.__rpc.CheckSuccess()
    File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/apiproxy_rpc.py", line 134, in CheckSuccess
      raise self.exception
  DeadlineExceededError: The API call urlfetch.Fetch() took too long to respond and was cancelled.
  </code></pre>
  
  <p>I am using Google App Engine with Python.<br>
  What did I do wrong ? </p>