7
votes

Gevent-Socketo Nginx UWSGI ne fonctionne pas ensemble sur le serveur de développement

Je gère un projet Django qui utilise Gevent-Socketoo.

Pour une raison quelconque de mon serveur de développement, toutes mes demandes WebSockets renvoient un message 101 en attente code> à laquelle Socketio démarrera à vélo via tous les autres protocoles qui entraînent un en attente code > Statut. P>

L'erreur dans mes journaux UWSGI est la suivante: p> xxx pré>

localement, je n'ai pas ce problème. Je démarre le serveur à l'aide de python run.py code> p>

run.py sur mon environnement local strong> p> xxx pré> Sur mon Developer Server em>, où le bogue se produit, j'ai les paramètres suivants: p>

nginx.conf strong> p>

I'm using uwsgi 1.9.6, gevent-websocket 0.3.6, greenlet 0.4.0 and the dev version of gevent(-e git://github.com/surfly/gevent.git@e2f51c1358e88b60e45d1daf8ee263da64066576#egg=gevent-dev) and gevent-socketetio (-e git://github.com/abourget/gevent-socketio.git@aeece7038b0052ddf6b4228857e4d7a67a6242f2#egg=gevent_socketio-dev)

[root@li476-12 ~]# nginx -v
nginx version: nginx/1.4.1


3 commentaires

Pouvez-vous essayer peut-être de l'exécuter avec un processus et voir si le problème persiste? J'ai aussi des problèmes avec Gevent-Socketo avec plusieurs travailleurs à l'aide de GunCorn, pas sûr si c'est associé GITUB.COM/ABOURGET/GENVENT-SOCKEOIO/issues/132?source=cc . En outre, en utilisant uwsgi avec gevent semble être très buggy ... Github.com / Abourget / Gevent-Socketo / Problèmes / 81? Source = cc


@Bernhardvallant merci pour le commentaire. Le lien Gunicorn était assez utile. Je n'ai pas beaucoup de temps pour déboguer cela maintenant, mais quand je le ferai, je vais essayer de vous rappeler de mettre à jour ce post.


@ Super9 Je sais que c'est une vieille question, mais je me demande si vous avez déjà résolu ce qui vous donnait l'erreur? Je rencontre un problème similaire actuellement.


3 Réponses :


1
votes

Pour la prise en charge de WebSockets, vous avez besoin de dernière version de nginx (1.4.x). Si vous utilisez des sorties plus anciennes, vous ne pourrez pas démarrer la chaîne WebSocket


0 commentaires

0
votes

Le SocketIosserver ne fonctionnera jamais lorsque vous exécutez le fichier WSGI Django en tant que module, il n'y a pas __Name__ N'EST PAS __MAIN __

En plus de cela, la logique est fausse, car Sossioserver prendra l'application UWSGI Blocking Yorur Django App.

Je vous suggère d'exécuter SocketIoserver à partir d'un script distinct à l'aide de --attach-Daemon de UWSGI

(et évidemment mettre UWSGI sur un port différent)


1 commentaires

Merci d'avoir répondu @roberto. Je pense que le phrasé de ma question vous a confondu. J'ai modifié pour le rendre plus clair. Je n'utilise que le fichier run.py (par opposition à ./manage.py runserver) localement et fonctionne bien. Le problème est les paramètres de mon serveur de développement.



0
votes

Désactiver les threads dans UWSGI.

Vous avez un problème "Verrouillage d'interprétatateur global"

Enable-threads = True <- Je pense que le problème ici, essayez faux


0 commentaires