uWSGI Restituzione di risposta vuota


9

Ho un sito Django che sto cercando di server tramite uWSGI. Ho avviato il server in questo modo:

uwsgi --emperor .
Ctrl+Z
bg 1

(Esistono due file .ini che indicano la versione di prova e la versione di produzione del sito, che servono rispettivamente su 9001 e 9002)

Quindi tento di ottenere il mio sito:

curl http://localhost:9002

Quando lo faccio, ricevo un messaggio che dice che il vassel è fedele ma nessuna risposta effettiva. Uwsgi.log contiene quindi quanto segue:

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

Nessun errore registrato.

Devo dire che ha funzionato bene prima di riavviare, quindi i file uwsgi.ini dovrebbero andare bene.

Qualche idea su dove dovrei iniziare a diagnosticare questo?


Posso segnalare un problema simile ma con una configurazione ancora più semplice. Le intestazioni vengono inviate correttamente, ma il corpo della risposta è semplicemente vuoto. Lo provo con Python 3.4 sia uWSGI che gunicorn.
Dakota,

coda il registro uwsgi e leggilo con molta attenzione, è un fastidio verboso ma alla fine sono stato in grado di rintracciare il mio problema, mi mancava la plugin = python3strofa dall'ini del mio uwsgi vassal, che a sua volta significava che il mio progetto python3 django non era effettivamente caricato o eseguito correttamente,
ThorSummoner,

Risposte:


8

Ho avuto qualche problema, si è scoperto che la mia applicazione wsgi stava restituendo UNICODE invece di BYTE STRINGS (ero su python3); e nei registri non è stato mostrato nulla ... WSGI si aspetta stringhe di byte nell'output, mai unicode.

Nel callable della tua applicazione invece di return "string"te dovresti usare 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"

Puoi controllare http://uwsgi-docs.readthedocs.io/en/latest/Python.html#python-3 per maggiori informazioni sull'uso di uwsgi con python3 .


1
+1 Questo mi ha aiutato. Stavo ottenendo una risposta vuota dallo stack python3 virtualenv + uwsgi + nginx. return ["hello world"]dovrebbe essere return [b"hello world"]più informazioni su: uwsgi-docs.readthedocs.io/en/latest/Python.html
AmirHossein,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.