Ich habe eine Django-Site, die ich über uWSGI bedienen möchte. Ich habe den Server so gestartet:
uwsgi --emperor .
Ctrl+Z
bg 1
(Es gibt zwei INI-Dateien, die auf die Testversion und die Produktionsversion der Site verweisen und auf 9001 bzw. 9002 bereitgestellt werden.)
Ich versuche dann, meine Seite zu bekommen:
curl http://localhost:9002
Wenn ich das mache, bekomme ich eine Nachricht, dass der Vasel loyal ist, aber keine tatsächliche Antwort. Das uwsgi.log enthält dann Folgendes:
[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)
Es werden keine Fehler protokolliert.
Ich sollte sagen, dies hat vor einem Neustart gut funktioniert, daher sollten die Dateien uwsgi.ini in Ordnung sein.
Irgendwelche Ideen, wo ich anfangen sollte, dies zu diagnostizieren?
plugin = python3
Strophe in der Ini meines Uwsgi-Vasallen, was wiederum bedeutete, dass mein Python3-Django-Projekt nicht wirklich geladen wurde oder richtig laufen,Antworten:
Ich hatte ein Problem, es stellte sich heraus, dass meine wsgi-Anwendung UNICODE anstelle von BYTE STRINGS zurückgab (ich war auf Python3); und nichts wurde in Protokollen darüber angezeigt ... WSGI erwartet Byte-Strings in der Ausgabe, niemals Unicode.
Im aufrufbaren Ihrer Anwendung
return "string"
sollten Sie stattdessenreturn b"string"
oder verwendenreturn "string".encode("utf-8")
Sie können prüfen , http://uwsgi-docs.readthedocs.io/en/latest/Python.html#python-3 für mehr informaiton heraus mit uwsgi mit python3 .
quelle
return ["hello world"]
sollte seinreturn [b"hello world"]
: auf weitere Informationen uwsgi-docs.readthedocs.io/en/latest/Python.html