<class 'urllib2.HTTPError'>
Python 2.7.13: /home/user/webapps/mappacker/venv/bin/python
Sat Apr 20 13:21:29 2024

A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.

 /home/user/webapps/mappacker/venv/local/lib/python2.7/site-packages/flup/server/fcgi_base.py in run(self=<flup.server.fcgi_base.Request object>)
    556         """Runs the handler, flushes the streams, and ends the request."""
    557         try:
=>  558             protocolStatus, appStatus = self.server.handler(self)
    559         except:
    560             traceback.print_exc(file=self.stderr)
protocolStatus undefined, appStatus undefined, self = <flup.server.fcgi_base.Request object>, self.server = <flup.server.fcgi.WSGIServer object>, self.server.handler = <bound method WSGIServer.handler of <flup.server.fcgi.WSGIServer object>>
 /home/user/webapps/mappacker/venv/local/lib/python2.7/site-packages/flup/server/fcgi_base.py in handler(self=<flup.server.fcgi.WSGIServer object>, req=<flup.server.fcgi_base.Request object>)
   1116         try:
   1117             try:
=> 1118                 result = self.application(environ, start_response)
   1119                 try:
   1120                     for data in result:
result = None, self = <flup.server.fcgi.WSGIServer object>, self.application = <Flask 'mappacker'>, environ = {'CONTENT_LENGTH': '', 'CONTENT_TYPE': '', 'DOCUMENT_ROOT': '/usr/share/nginx/html', 'DOCUMENT_URI': '/display/1', 'GATEWAY_INTERFACE': 'CGI/1.1', 'HTTP_ACCEPT': '*/*', 'HTTP_ACCEPT_ENCODING': 'gzip, br', 'HTTP_CDN_LOOP': 'cloudflare', 'HTTP_CF_CONNECTING_IP': '3.141.0.61', 'HTTP_CF_IPCOUNTRY': 'US', ...}, start_response = <function start_response>
 /home/user/webapps/mappacker/venv/local/lib/python2.7/site-packages/flask/app.py in __call__(self=<Flask 'mappacker'>, environ={'CONTENT_LENGTH': '', 'CONTENT_TYPE': '', 'DOCUMENT_ROOT': '/usr/share/nginx/html', 'DOCUMENT_URI': '/display/1', 'GATEWAY_INTERFACE': 'CGI/1.1', 'HTTP_ACCEPT': '*/*', 'HTTP_ACCEPT_ENCODING': 'gzip, br', 'HTTP_CDN_LOOP': 'cloudflare', 'HTTP_CF_CONNECTING_IP': '3.141.0.61', 'HTTP_CF_IPCOUNTRY': 'US', ...}, start_response=<function start_response>)
   1834     def __call__(self, environ, start_response):
   1835         """Shortcut for :attr:`wsgi_app`."""
=> 1836         return self.wsgi_app(environ, start_response)
   1837 
   1838     def __repr__(self):
self = <Flask 'mappacker'>, self.wsgi_app = <bound method Flask.wsgi_app of <Flask 'mappacker'>>, environ = {'CONTENT_LENGTH': '', 'CONTENT_TYPE': '', 'DOCUMENT_ROOT': '/usr/share/nginx/html', 'DOCUMENT_URI': '/display/1', 'GATEWAY_INTERFACE': 'CGI/1.1', 'HTTP_ACCEPT': '*/*', 'HTTP_ACCEPT_ENCODING': 'gzip, br', 'HTTP_CDN_LOOP': 'cloudflare', 'HTTP_CF_CONNECTING_IP': '3.141.0.61', 'HTTP_CF_IPCOUNTRY': 'US', ...}, start_response = <function start_response>
 /home/user/webapps/mappacker/venv/local/lib/python2.7/site-packages/flask/app.py in wsgi_app(self=<Flask 'mappacker'>, environ={'CONTENT_LENGTH': '', 'CONTENT_TYPE': '', 'DOCUMENT_ROOT': '/usr/share/nginx/html', 'DOCUMENT_URI': '/display/1', 'GATEWAY_INTERFACE': 'CGI/1.1', 'HTTP_ACCEPT': '*/*', 'HTTP_ACCEPT_ENCODING': 'gzip, br', 'HTTP_CDN_LOOP': 'cloudflare', 'HTTP_CF_CONNECTING_IP': '3.141.0.61', 'HTTP_CF_IPCOUNTRY': 'US', ...}, start_response=<function start_response>)
   1818             except Exception as e:
   1819                 error = e
=> 1820                 response = self.make_response(self.handle_exception(e))
   1821             return response(environ, start_response)
   1822         finally:
response undefined, self = <Flask 'mappacker'>, self.make_response = <bound method Flask.make_response of <Flask 'mappacker'>>, self.handle_exception = <bound method Flask.handle_exception of <Flask 'mappacker'>>, e = HTTPError()
 /home/user/webapps/mappacker/venv/local/lib/python2.7/site-packages/flask/app.py in handle_exception(self=<Flask 'mappacker'>, e=HTTPError())
   1401             # otherwise, we just raise the error again
   1402             if exc_value is e:
=> 1403                 reraise(exc_type, exc_value, tb)
   1404             else:
   1405                 raise e
global reraise = <function reraise>, exc_type = <class 'urllib2.HTTPError'>, exc_value = HTTPError(), tb = <traceback object>
 /home/user/webapps/mappacker/venv/local/lib/python2.7/site-packages/flask/app.py in wsgi_app(self=<Flask 'mappacker'>, environ={'CONTENT_LENGTH': '', 'CONTENT_TYPE': '', 'DOCUMENT_ROOT': '/usr/share/nginx/html', 'DOCUMENT_URI': '/display/1', 'GATEWAY_INTERFACE': 'CGI/1.1', 'HTTP_ACCEPT': '*/*', 'HTTP_ACCEPT_ENCODING': 'gzip, br', 'HTTP_CDN_LOOP': 'cloudflare', 'HTTP_CF_CONNECTING_IP': '3.141.0.61', 'HTTP_CF_IPCOUNTRY': 'US', ...}, start_response=<function start_response>)
   1815         try:
   1816             try:
=> 1817                 response = self.full_dispatch_request()
   1818             except Exception as e:
   1819                 error = e
response undefined, self = <Flask 'mappacker'>, self.full_dispatch_request = <bound method Flask.full_dispatch_request of <Flask 'mappacker'>>
 /home/user/webapps/mappacker/venv/local/lib/python2.7/site-packages/flask/app.py in full_dispatch_request(self=<Flask 'mappacker'>)
   1475                 rv = self.dispatch_request()
   1476         except Exception as e:
=> 1477             rv = self.handle_user_exception(e)
   1478         response = self.make_response(rv)
   1479         response = self.process_response(response)
rv = None, self = <Flask 'mappacker'>, self.handle_user_exception = <bound method Flask.handle_user_exception of <Flask 'mappacker'>>, e = HTTPError()
 /home/user/webapps/mappacker/venv/local/lib/python2.7/site-packages/flask/app.py in handle_user_exception(self=<Flask 'mappacker'>, e=HTTPError())
   1379                 return handler(e)
   1380 
=> 1381         reraise(exc_type, exc_value, tb)
   1382 
   1383     def handle_exception(self, e):
global reraise = <function reraise>, exc_type = <class 'urllib2.HTTPError'>, exc_value = HTTPError(), tb = <traceback object>
 /home/user/webapps/mappacker/venv/local/lib/python2.7/site-packages/flask/app.py in full_dispatch_request(self=<Flask 'mappacker'>)
   1473             rv = self.preprocess_request()
   1474             if rv is None:
=> 1475                 rv = self.dispatch_request()
   1476         except Exception as e:
   1477             rv = self.handle_user_exception(e)
rv = None, self = <Flask 'mappacker'>, self.dispatch_request = <bound method Flask.dispatch_request of <Flask 'mappacker'>>
 /home/user/webapps/mappacker/venv/local/lib/python2.7/site-packages/flask/app.py in dispatch_request(self=<Flask 'mappacker'>)
   1459             return self.make_default_options_response()
   1460         # otherwise dispatch to the handler for that endpoint
=> 1461         return self.view_functions[rule.endpoint](**req.view_args)
   1462 
   1463     def full_dispatch_request(self):
self = <Flask 'mappacker'>, self.view_functions = {'add_visit': <function add_visit>, 'display': <function display>, 'forgot': <function forgot>, 'index': <function index>, 'logout': <function logout>, 'remove_visit': <function remove_visit>, 'static': <bound method Flask.send_static_file of <Flask 'mappacker'>>}, rule = <Rule '/display/<owner_id>' (HEAD, OPTIONS, GET) -> display>, rule.endpoint = 'display', req = <Request 'http://mappacker.intuitivo.fr/display/1?image_only' [GET]>, req.view_args = {'owner_id': 1}
 /home/user/webapps/mappacker/mappacker.py in display(owner_id=1)
    209         image_url = "https://chart.googleapis.com/chart?cht=map:fixed=-60,-180,80,180&chs=600x350&chf=bg,s,9BB7CB&chld=" + '|'.join((c['iso2'] for c in countries if c['visited'])) + '&chco=F0EFEB|FF0000'
    210         if "image_only" in request.args:
=>  211             response = make_response(urllib2.urlopen(image_url).read())
    212             response.headers['Content-Type'] = 'image/png'
    213             return response
response undefined, global make_response = <function make_response>, global urllib2 = <module 'urllib2' from '/usr/lib/python2.7/urllib2.pyc'>, urllib2.urlopen = <function urlopen>, image_url = u'https://chart.googleapis.com/chart?cht=map:fixed...|TH|TN|TR|UA|AE|GB|US|VA|VN|VI&chco=F0EFEB|FF0000', ).read undefined
 /usr/lib/python2.7/urllib2.py in urlopen(url=u'https://chart.googleapis.com/chart?cht=map:fixed...|TH|TN|TR|UA|AE|GB|US|VA|VN|VI&chco=F0EFEB|FF0000', data=None, timeout=<object object>, cafile=None, capath=None, cadefault=False, context=None)
    152     else:
    153         opener = _opener
=>  154     return opener.open(url, data, timeout)
    155 
    156 def install_opener(opener):
opener = <urllib2.OpenerDirector instance>, opener.open = <bound method OpenerDirector.open of <urllib2.OpenerDirector instance>>, url = u'https://chart.googleapis.com/chart?cht=map:fixed...|TH|TN|TR|UA|AE|GB|US|VA|VN|VI&chco=F0EFEB|FF0000', data = None, timeout = <object object>
 /usr/lib/python2.7/urllib2.py in open(self=<urllib2.OpenerDirector instance>, fullurl=u'https://chart.googleapis.com/chart?cht=map:fixed...|TH|TN|TR|UA|AE|GB|US|VA|VN|VI&chco=F0EFEB|FF0000', data=None, timeout=<object object>)
    433         for processor in self.process_response.get(protocol, []):
    434             meth = getattr(processor, meth_name)
=>  435             response = meth(req, response)
    436 
    437         return response
response = <addinfourl at 139759182352184 whose fp = <socket._fileobject object>>, meth = <bound method HTTPErrorProcessor.http_response of <urllib2.HTTPErrorProcessor instance>>, req = <urllib2.Request instance>
 /usr/lib/python2.7/urllib2.py in http_response(self=<urllib2.HTTPErrorProcessor instance>, request=<urllib2.Request instance>, response=<addinfourl at 139759182352184 whose fp = <socket._fileobject object>>)
    546         if not (200 <= code < 300):
    547             response = self.parent.error(
=>  548                 'http', request, response, code, msg, hdrs)
    549 
    550         return response
request = <urllib2.Request instance>, response = <addinfourl at 139759182352184 whose fp = <socket._fileobject object>>, code = 404, msg = 'Not Found', hdrs = <httplib.HTTPMessage instance>
 /usr/lib/python2.7/urllib2.py in error(self=<urllib2.OpenerDirector instance>, proto=404, *args=({301: [<urllib2.HTTPRedirectHandler instance>], 302: [<urllib2.HTTPRedirectHandler instance>], 303: [<urllib2.HTTPRedirectHandler instance>], 307: [<urllib2.HTTPRedirectHandler instance>], 'default': [<urllib2.HTTPDefaultErrorHandler instance>]}, 'default', 'http_error_default', <urllib2.Request instance>, <addinfourl at 139759182352184 whose fp = <socket._fileobject object>>, 404, 'Not Found', <httplib.HTTPMessage instance>))
    471         if http_err:
    472             args = (dict, 'default', 'http_error_default') + orig_args
=>  473             return self._call_chain(*args)
    474 
    475 # XXX probably also want an abstract factory that knows when it makes
self = <urllib2.OpenerDirector instance>, self._call_chain = <bound method OpenerDirector._call_chain of <urllib2.OpenerDirector instance>>, args = ({301: [<urllib2.HTTPRedirectHandler instance>], 302: [<urllib2.HTTPRedirectHandler instance>], 303: [<urllib2.HTTPRedirectHandler instance>], 307: [<urllib2.HTTPRedirectHandler instance>], 'default': [<urllib2.HTTPDefaultErrorHandler instance>]}, 'default', 'http_error_default', <urllib2.Request instance>, <addinfourl at 139759182352184 whose fp = <socket._fileobject object>>, 404, 'Not Found', <httplib.HTTPMessage instance>)
 /usr/lib/python2.7/urllib2.py in _call_chain(self=<urllib2.OpenerDirector instance>, chain={301: [<urllib2.HTTPRedirectHandler instance>], 302: [<urllib2.HTTPRedirectHandler instance>], 303: [<urllib2.HTTPRedirectHandler instance>], 307: [<urllib2.HTTPRedirectHandler instance>], 'default': [<urllib2.HTTPDefaultErrorHandler instance>]}, kind='default', meth_name='http_error_default', *args=(<urllib2.Request instance>, <addinfourl at 139759182352184 whose fp = <socket._fileobject object>>, 404, 'Not Found', <httplib.HTTPMessage instance>))
    405             func = getattr(handler, meth_name)
    406 
=>  407             result = func(*args)
    408             if result is not None:
    409                 return result
result undefined, func = <bound method HTTPDefaultErrorHandler.http_error...lt of <urllib2.HTTPDefaultErrorHandler instance>>, args = (<urllib2.Request instance>, <addinfourl at 139759182352184 whose fp = <socket._fileobject object>>, 404, 'Not Found', <httplib.HTTPMessage instance>)
 /usr/lib/python2.7/urllib2.py in http_error_default(self=<urllib2.HTTPDefaultErrorHandler instance>, req=<urllib2.Request instance>, fp=<addinfourl at 139759182352184 whose fp = <socket._fileobject object>>, code=404, msg='Not Found', hdrs=<httplib.HTTPMessage instance>)
    554 class HTTPDefaultErrorHandler(BaseHandler):
    555     def http_error_default(self, req, fp, code, msg, hdrs):
=>  556         raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
    557 
    558 class HTTPRedirectHandler(BaseHandler):
global HTTPError = <class 'urllib2.HTTPError'>, req = <urllib2.Request instance>, req.get_full_url = <bound method Request.get_full_url of <urllib2.Request instance>>, code = 404, msg = 'Not Found', hdrs = <httplib.HTTPMessage instance>, fp = <addinfourl at 139759182352184 whose fp = <socket._fileobject object>>

<class 'urllib2.HTTPError'>: HTTP Error 404: Not Found
      args = ()
      close = <bound method HTTPError.close of HTTPError()>
      code = 404
      errno = None
      filename = u'https://chart.googleapis.com/chart?cht=map:fixed...|TH|TN|TR|UA|AE|GB|US|VA|VN|VI&chco=F0EFEB|FF0000'
      fileno = <bound method _fileobject.fileno of <socket._fileobject object>>
      fp = <addinfourl at 139759182352184 whose fp = <socket._fileobject object>>
      getcode = <bound method HTTPError.getcode of HTTPError()>
      geturl = <bound method HTTPError.geturl of HTTPError()>
      hdrs = <httplib.HTTPMessage instance>
      headers = <httplib.HTTPMessage instance>
      info = <bound method HTTPError.info of HTTPError()>
      message = ''
      msg = 'Not Found'
      next = <bound method _fileobject.next of <socket._fileobject object>>
      read = <bound method _fileobject.read of <socket._fileobject object>>
      readline = <bound method _fileobject.readline of <socket._fileobject object>>
      readlines = <bound method _fileobject.readlines of <socket._fileobject object>>
      reason = 'Not Found'
      strerror = None
      url = u'https://chart.googleapis.com/chart?cht=map:fixed...|TH|TN|TR|UA|AE|GB|US|VA|VN|VI&chco=F0EFEB|FF0000'