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?
plugin = python3
estrofe 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,Respostas:
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 usarreturn b"string"
oureturn "string".encode("utf-8")
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 .
fonte
return ["hello world"]
deve serreturn [b"hello world"]
mais informações em: uwsgi-docs.readthedocs.io/en/latest/Python.html