Isso: raise UnicodeError("The status string must be a native string")

Tras levantar un nuevo entorno de Isso, al intentar recuperar los comentarios o publicar uno nuevo se registraba el siguiente error en los logs:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Oct 22 08:25:17 blog isso-dev: 192.168.100.100 - - [2017-10-22 08:25:17] "GET /js/embed.min.js HTTP/1.1" 200 56494 0.045020
Oct 22 08:25:18 blog isso-dev: Traceback (most recent call last):
Oct 22 08:25:18 blog isso-dev: File "/opt/isso/dev/lib/python2.7/site-packages/gevent/pywsgi.py", line 935, in handle_one_response
Oct 22 08:25:18 blog isso-dev: self.run_application()
Oct 22 08:25:18 blog isso-dev: File "/opt/isso/dev/lib/python2.7/site-packages/gevent/pywsgi.py", line 908, in run_application
Oct 22 08:25:18 blog isso-dev: self.result = self.application(self.environ, self.start_response)
Oct 22 08:25:18 blog isso-dev: File "/opt/isso/dev/lib/python2.7/site-packages/werkzeug/contrib/fixers.py", line 152, in __call__
Oct 22 08:25:18 blog isso-dev: return self.app(environ, start_response)
Oct 22 08:25:18 blog isso-dev: File "/opt/isso/dev/lib/python2.7/site-packages/isso/wsgi.py", line 119, in __call__
Oct 22 08:25:18 blog isso-dev: return self.app(environ, start_response)
Oct 22 08:25:18 blog isso-dev: File "/opt/isso/dev/lib/python2.7/site-packages/isso/wsgi.py", line 147, in __call__
Oct 22 08:25:18 blog isso-dev: add_cors_headers("200 Ok", [("Content-Type", "text/plain")])
Oct 22 08:25:18 blog isso-dev: File "/opt/isso/dev/lib/python2.7/site-packages/isso/wsgi.py", line 144, in add_cors_headers
Oct 22 08:25:18 blog isso-dev: return start_response(status, headers.to_list(), exc_info)
Oct 22 08:25:18 blog isso-dev: File "/opt/isso/dev/lib/python2.7/site-packages/gevent/pywsgi.py", line 830, in start_response
Oct 22 08:25:18 blog isso-dev: raise UnicodeError("The status string must be a native string")
Oct 22 08:25:18 blog isso-dev: UnicodeError: The status string must be a native string
Oct 22 08:25:18 blog isso-dev: Sun Oct 22 08:25:18 2017 {'REMOTE_PORT': '44922', 'HTTP_HOST': 'dev-comment.guillen.io', 'REMOTE_ADDR': '192.168.100.21', (hidden keys: 32)} failed with UnicodeError

La solución, encontrada en Unicode issue in add_cors_headers with uWSGI and Python 2, es editar el archivo /lib/python2.7/site-packages/gevent/pywsgi.py, /opt/isso/dev/ y modificar la línea donde se invoca la función add_cors_headers para pasarle el parámetro status como la cadena numérica resultante tras codificar la cadena de texto “200 Ok” en UTF-8, es decir, reemplazar:

  • add_cors_headers("200 Ok", [("Content-Type", "text/plain")]), por
  • add_cors_headers(b"200 Ok", [("Content-Type", "text/plain")])

Ejemplo:

1
2
3
4
5
6
(dev)[root@blog dev]# ISSO_VIRTUALENV=/opt/isso/dev
(dev)[root@blog dev]# grep "200 Ok" $ISSO_VIRTUALENV/lib/python2.7/site-packages/isso/wsgi.py
add_cors_headers("200 Ok", [("Content-Type", "text/plain")])
(dev)[root@blog dev]# sed -i 's|"200 Ok"|b"200 Ok"|g' $ISSO_VIRTUALENV/lib/python2.7/site-packages/isso/wsgi.py
(dev)[root@blog dev]# grep "200 Ok" $ISSO_VIRTUALENV/python2.7/site-packages/isso/wsgi.py
add_cors_headers(b"200 Ok", [("Content-Type", "text/plain")])

Por último solo es necesario reiniciar el demonio y comprobar el funcionamiento:

  • Listar comentarios:
1
2
3
4
Oct 22 08:34:58 blog isso-dev: 192.168.100.100 - - [2017-10-22 08:34:58] "GET /js/embed.min.js HTTP/1.1" 200 56494 0.001173
Oct 22 08:34:59 blog isso-dev: 192.168.100.100 - - [2017-10-22 08:34:59] "OPTIONS /?uri=%2F%2F2017%2F03%2F15%2Fapache-instalar-y-configurar-php-fpm-fastcgi-process-manager%2F&limit=10&nested_limit=5 HTTP/1.1" 200 371 0.000225
Oct 22 08:34:59 blog isso-dev: 192.168.100.100 - - [2017-10-22 08:34:59] "OPTIONS /count HTTP/1.1" 200 371 0.000154
Oct 22 08:35:31 blog isso-dev: 192.168.100.100 - - [2017-10-22 08:35:31] "OPTIONS /new?uri=%2F%2F2017%2F03%2F15%2Fapache-instalar-y-configurar-php-fpm-fastcgi-process-manager%2F HTTP/1.1" 200 371 0.000211
  • Publicar comentarios:
1
2
Oct 22 08:38:17 blog isso-dev: 192.168.100.100 - - [2017-10-22 08:38:17] "OPTIONS /new?uri=%2F2017%2F09%2F03%2Fapache-location-deny-allow%2F HTTP/1.1" 200 371 0.000208
Oct 22 08:38:18 blog isso-dev: 192.168.100.100 - - [2017-10-22 08:38:18] "POST /new?uri=%2F2017%2F09%2F03%2Fapache-location-deny-allow%2F HTTP/1.1" 202 1001 0.402521
  • Activar comentarios en espera de moderación:
1
2
3
4
Oct 22 08:40:21 blog isso-dev: 192.168.100.100 - - [2017-10-22 08:40:21] "GET /id/1/activate/MQ.DM3sHQ.M1gzdIXXGHfADhqp8WWPbLc0cSg HTTP/1.1" 200 559 0.001015
Oct 22 08:40:28 blog isso-dev: 192.168.100.100 - - [2017-10-22 08:40:28] "GET /favicon.ico HTTP/1.1" 404 612 0.000508
Oct 22 08:40:28 blog isso-dev: 192.168.100.100 - - [2017-10-22 08:40:28] "POST /id/1/activate/MQ.DM3sHQ.M1gzdIXXGHfADhqp8WWPbLc0cSg HTTP/1.1" 200 388 0.139292
Oct 22 08:40:28 blog isso-dev: 192.168.100.100 - - [2017-10-22 08:40:28] "GET /favicon.ico HTTP/1.1" 404 612 0.000476
Contenidos