uWSGI Retornando resposta vazia

9

Eu tenho um site Django que estou tentando servidor via uWSGI. Eu iniciei o servidor assim:

uwsgi --emperor .
Ctrl+Z
bg 1

(Existem dois arquivos .ini que apontam para a versão de teste e a versão de produção do site, servindo em 9001 e 9002, respectivamente)

Em seguida, tento obter meu site:

curl http://localhost:9002

Quando faço isso, recebo uma mensagem dizendo que o vassel é leal, mas sem resposta real. O uwsgi.log contém o seguinte:

[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)

Nenhum erro é registrado.

Devo dizer que isso funcionou bem antes de uma reinicialização, portanto os arquivos uwsgi.ini devem ficar bem.

Alguma idéia de onde eu deveria começar a diagnosticar isso?

d4nt
fonte
Posso relatar um problema semelhante, mas com uma configuração ainda mais básica. Os cabeçalhos são enviados corretamente, mas o corpo da resposta está simplesmente vazio. Eu experimento isso com o Python 3.4 uWSGI e gunicorn.
Dakota
seguir o log do uwsgi e lê-lo com muito cuidado, é um aborrecimento detalhado, mas finalmente consegui rastrear meu problema, estava faltando a plugin = python3estrofe do ini do meu uwsgi vassal, o que, por sua vez, significava que meu projeto python3 django não estava sendo carregado ou execute corretamente,
ThorSummoner

Respostas:

8

Eu tive algum problema, verificou-se que meu aplicativo wsgi estava retornando UNICODE em vez de BYTE STRINGS (eu estava no python3); e nada foi mostrado nos logs sobre isso ... O WSGI espera seqüências de bytes na saída, nunca unicode.

Na chamada do seu aplicativo em vez de return "string"você deve usar return b"string"oureturn "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"

Você pode conferir http://uwsgi-docs.readthedocs.io/en/latest/Python.html#python-3 para obter mais informações sobre o uso de uwsgi com python3 .

PKL
fonte
1
+1 Isso me ajudou. Eu estava recebendo resposta vazia da pilha python3 virtualenv + uwsgi + nginx. return ["hello world"]deve ser return [b"hello world"]mais informações em: uwsgi-docs.readthedocs.io/en/latest/Python.html
AmirHossein