uWSGI Mengembalikan Respons Kosong

9

Saya memiliki situs Django yang saya coba ke server melalui uWSGI. Saya sudah mulai server seperti:

uwsgi --emperor .
Ctrl+Z
bg 1

(Ada dua file .ini yang mengarah ke versi uji dan versi produksi situs, masing-masing melayani pada 9001 dan 9002)

Saya kemudian mencoba untuk mendapatkan situs saya:

curl http://localhost:9002

Ketika saya melakukan itu, saya mendapatkan pesan yang mengatakan bahwa vassel itu loyal tetapi tidak ada respons yang sebenarnya. The uwsgi.log kemudian berisi yang berikut:

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

Tidak ada kesalahan yang dicatat.

Saya harus mengatakan, ini berfungsi dengan baik sebelum reboot sehingga file uwsgi.ini harus baik-baik saja.

Adakah ide di mana saya harus mulai mendiagnosis hal ini?

d4nt
sumber
Saya dapat melaporkan masalah serupa tetapi dengan konfigurasi yang lebih mendasar. Header dikirim dengan benar, tetapi tubuh respons benar-benar kosong. Saya mengalami ini dengan Python 3.4 baik uWSGI dan gunicorn.
Dakota
buntuti log uwsgi dan membacanya dengan sangat hati-hati, ini sangat menyebalkan tapi akhirnya saya bisa melacak masalah saya, saya kehilangan plugin = python3bait dari uwsgi vassal ini, yang pada gilirannya berarti proyek python3 django saya sebenarnya tidak dimuat atau berjalan dengan benar,
ThorSummoner

Jawaban:

8

Saya mempunyai beberapa masalah, ternyata aplikasi wsgi saya mengembalikan UNICODE daripada BYTE STRING (saya menggunakan python3); dan tidak ada yang ditunjukkan dalam log tentang hal itu ... WSGI mengharapkan byte string dalam output, tidak pernah unicode.

Dalam callable aplikasi Anda, bukan return "string"Anda harus menggunakan return b"string"ataureturn "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"

Anda dapat memeriksa http://uwsgi-docs.readthedocs.io/en/latest/Python.html#python-3 untuk informasi lebih lanjut tentang penggunaan uwsgi dengan python3 .

PKL
sumber
1
+1 Ini membantu saya. Saya mendapatkan respons kosong dari python3 virtualenv + uwsgi + nginx stack. return ["hello world"]harus return [b"hello world"]info lebih lanjut tentang: uwsgi-docs.readthedocs.io/en/latest/Python.html
AmirHossein