uWSGI devolviendo respuesta vacía

9

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?

d4nt
fuente
Puedo informar un problema similar pero con una configuración aún más básica. Los encabezados se envían correctamente, pero el cuerpo de la respuesta simplemente está vacío. Experimento esto con Python 3.4 tanto uWSGI como gunicorn.
Dakota
seguí el registro de uwsgi y lo leí con mucho cuidado, es una molestia detallada pero finalmente pude rastrear mi problema, me faltaba la plugin = python3estrofa 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,
ThorSummoner

Respuestas:

8

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 usar return b"string"oreturn "string".encode("utf-8")

def application(env, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    # One of the below can be used.
    return "string".encode("utf-8")
    return b"string"

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 .

PKL
fuente
1
+1 Esto me ayudó. Estaba obteniendo una respuesta vacía de python3 virtualenv + uwsgi + nginx stack. return ["hello world"]debería haber return [b"hello world"]más información sobre: uwsgi-docs.readthedocs.io/en/latest/Python.html
AmirHossein