Tengo un sitio Django que estoy tratando de servidor a través de uWSGI. He iniciado el servidor así:
uwsgi --emperor .
Ctrl+Z
bg 1
(Hay dos archivos .ini que apuntan a la versión de prueba y la versión de producción del sitio, que sirven en 9001 y 9002 respectivamente)
Luego intento obtener mi sitio:
curl http://localhost:9002
Cuando hago eso, recibo un mensaje que dice que el vasallo es leal pero no tiene una respuesta real. El uwsgi.log contiene lo siguiente:
[pid: 5071|app: 0|req: 2/2] 127.0.0.1 () {26 vars in 357 bytes} [Tue Jul 23 13:20:21 2013] GET / => generated 0 bytes in 1 msecs (HTTP/1.1 302) 2 headers in 96 bytes (1 switches on core 1)
No se registran errores.
Debo decir que esto funcionó bien antes de reiniciar, por lo que los archivos uwsgi.ini deberían estar bien.
¿Alguna idea de dónde debería comenzar a diagnosticar esto?
plugin = python3
estrofa del ini de mi uwsgi vassal, lo que a su vez significaba que mi proyecto python3 django en realidad no se estaba cargando o corre correctamente,Respuestas:
Tuve el problema, resultó que mi aplicación wsgi estaba devolviendo UNICODE en lugar de BYTE STRINGS (estaba en python3); y nada se muestra en los registros al respecto ... WSGI espera cadenas de bytes en la salida, nunca unicode.
En el invocable de su aplicación, en lugar de
return "string"
usted, debe usarreturn b"string"
oreturn "string".encode("utf-8")
Puede consultar http://uwsgi-docs.readthedocs.io/en/latest/Python.html#python-3 para obtener más información sobre el uso de uwsgi con python3 .
fuente
return ["hello world"]
debería haberreturn [b"hello world"]
más información sobre: uwsgi-docs.readthedocs.io/en/latest/Python.html