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?
plugin = python3
bait dari uwsgi vassal ini, yang pada gilirannya berarti proyek python3 django saya sebenarnya tidak dimuat atau berjalan dengan benar,Jawaban:
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 menggunakanreturn b"string"
ataureturn "string".encode("utf-8")
Anda dapat memeriksa http://uwsgi-docs.readthedocs.io/en/latest/Python.html#python-3 untuk informasi lebih lanjut tentang penggunaan uwsgi dengan python3 .
sumber
return ["hello world"]
harusreturn [b"hello world"]
info lebih lanjut tentang: uwsgi-docs.readthedocs.io/en/latest/Python.html