dsys / match

:crystal_ball: Scalable reverse image search built on Kubernetes and Elasticsearch
Other
1.25k stars 150 forks source link

UnicodeEncodeError: 'ascii' codec can't encode character #31

Closed JannikZed closed 6 years ago

JannikZed commented 6 years ago

When using the service I receive pretty often this error:

UnicodeEncodeError: 'ascii' codec can't encode character '\xf3' in position 43: ordinal not in range(128)
22.8.2018 15:33:09 10.42.0.0 - - [22/Aug/2018:13:33:09 +0000] "POST /add HTTP/1.1" 500 147 "-" "axios/0.18.0" - 27210
22.8.2018 15:33:09 [2018-08-22 13:33:09,429] ERROR in app: Exception on /add [POST]
22.8.2018 15:33:09 Traceback (most recent call last):
22.8.2018 15:33:09   File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1982, in wsgi_app
22.8.2018 15:33:09     response = self.full_dispatch_request()
22.8.2018 15:33:09   File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1614, in full_dispatch_request
22.8.2018 15:33:09     rv = self.handle_user_exception(e)
22.8.2018 15:33:09   File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1517, in handle_user_exception
22.8.2018 15:33:09     reraise(exc_type, exc_value, tb)
22.8.2018 15:33:09   File "/usr/local/lib/python3.6/site-packages/flask/_compat.py", line 33, in reraise
22.8.2018 15:33:09     raise value
22.8.2018 15:33:09   File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1612, in full_dispatch_request
22.8.2018 15:33:09     rv = self.dispatch_request()
22.8.2018 15:33:09   File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1598, in dispatch_request
22.8.2018 15:33:09     return self.view_functions[rule.endpoint](**req.view_args)
22.8.2018 15:33:09   File "/server.py", line 71, in add_handler
22.8.2018 15:33:09     ses.add_image(path, img, bytestream=bs, metadata=metadata)
22.8.2018 15:33:09   File "/usr/local/lib/python3.6/site-packages/image_match/signature_database_base.py", line 202, in add_image
22.8.2018 15:33:09     rec = make_record(path, self.gis, self.k, self.N, img=img, bytestream=bytestream, metadata=metadata)
22.8.2018 15:33:09   File "/usr/local/lib/python3.6/site-packages/image_match/signature_database_base.py", line 339, in make_record
22.8.2018 15:33:09     signature = gis.generate_signature(img, bytestream=bytestream)
22.8.2018 15:33:09   File "/usr/local/lib/python3.6/site-packages/image_match/goldberg.py", line 159, in generate_signature
22.8.2018 15:33:09     im_array = self.preprocess_image(path_or_image, handle_mpo=self.handle_mpo, bytestream=bytestream)
22.8.2018 15:33:09   File "/usr/local/lib/python3.6/site-packages/image_match/goldberg.py", line 237, in preprocess_image
22.8.2018 15:33:09     return imread(image_or_path, as_grey=True)
22.8.2018 15:33:09   File "/usr/local/lib/python3.6/site-packages/skimage/io/_io.py", line 60, in imread
22.8.2018 15:33:09     with file_or_url_context(fname) as fname:
22.8.2018 15:33:09   File "/usr/local/lib/python3.6/contextlib.py", line 81, in __enter__
22.8.2018 15:33:09     return next(self.gen)
22.8.2018 15:33:09   File "/usr/local/lib/python3.6/site-packages/skimage/io/util.py", line 29, in file_or_url_context
22.8.2018 15:33:09     u = urlopen(resource_name)
22.8.2018 15:33:09   File "/usr/local/lib/python3.6/urllib/request.py", line 223, in urlopen
22.8.2018 15:33:09     return opener.open(url, data, timeout)
22.8.2018 15:33:09   File "/usr/local/lib/python3.6/urllib/request.py", line 526, in open
22.8.2018 15:33:09     response = self._open(req, data)
22.8.2018 15:33:09   File "/usr/local/lib/python3.6/urllib/request.py", line 544, in _open
22.8.2018 15:33:09     '_open', req)
22.8.2018 15:33:09   File "/usr/local/lib/python3.6/urllib/request.py", line 504, in _call_chain
22.8.2018 15:33:09     result = func(*args)
22.8.2018 15:33:09   File "/usr/local/lib/python3.6/urllib/request.py", line 1361, in https_open
22.8.2018 15:33:09     context=self._context, check_hostname=self._check_hostname)
22.8.2018 15:33:09   File "/usr/local/lib/python3.6/urllib/request.py", line 1318, in do_open
22.8.2018 15:33:09     encode_chunked=req.has_header('Transfer-encoding'))
22.8.2018 15:33:09   File "/usr/local/lib/python3.6/http/client.py", line 1239, in request
22.8.2018 15:33:09     self._send_request(method, url, body, headers, encode_chunked)
22.8.2018 15:33:09   File "/usr/local/lib/python3.6/http/client.py", line 1250, in _send_request
22.8.2018 15:33:09     self.putrequest(method, url, **skips)
22.8.2018 15:33:09   File "/usr/local/lib/python3.6/http/client.py", line 1117, in putrequest
22.8.2018 15:33:09     self._output(request.encode('ascii'))
22.8.2018 15:33:09 UnicodeEncodeError: 'ascii' codec can't encode character '\xfc' in position 45: ordinal not in range(128)

Any idea where this problem is coming from?

JannikZed commented 6 years ago

Seems like the service can't handle characters like the ó in aristóteles in an URL that we are trying to add. - Could we build the service more stable to handle errors like this?