J'ai un site Django que j'essaie de serveur via uWSGI. J'ai démarré le serveur comme ceci:
uwsgi --emperor .
Ctrl+Z
bg 1
(Il existe deux fichiers .ini qui pointent vers la version de test et la version de production du site, desservant respectivement 9001 et 9002)
J'essaie alors d'obtenir mon site:
curl http://localhost:9002
Quand je fais cela, je reçois un message disant que le vassel est loyal mais pas de réponse réelle. Le uwsgi.log contient alors les éléments suivants:
[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)
Aucune erreur n'est enregistrée.
Je dois dire que cela a bien fonctionné avant un redémarrage, donc les fichiers uwsgi.ini devraient être corrects.
Des idées où je devrais commencer à diagnostiquer cela?
plugin = python3
strophe de l'ini de mon uwsgi vassal, ce qui signifiait que mon projet django python3 n'était pas réellement chargé ou fonctionner correctement,Réponses:
J'ai eu un problème, il s'est avéré que mon application wsgi retournait UNICODE au lieu de BYTE STRINGS (j'étais sur python3); et rien n'apparaît dans les journaux à ce sujet ... WSGI attend des chaînes d'octets en sortie, jamais unicode.
Dans l' appelable de votre application au lieu de
return "string"
vous devez utiliserreturn b"string"
oureturn "string".encode("utf-8")
Vous pouvez consulter http://uwsgi-docs.readthedocs.io/en/latest/Python.html#python-3 pour plus d'informations sur l'utilisation d' uwsgi avec python3 .
la source
return ["hello world"]
devrait êtrereturn [b"hello world"]
plus d'informations sur: uwsgi-docs.readthedocs.io/en/latest/Python.html