Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 06/10/2012, à 14:23

AnsuzPeorth

Incompréhension WSGI, workers et threads (gunicorn + eventlet)

Bjr,
Le but de la manoeuvre, utiliser une application WSGI pour faire du ServerSideEvent.
Pour cela, il faut que chaque client soit connecté keep-alive.

J'utilise gunicorn et eventlet pour les threads. Le problème est le suivant:
dans mon appli wsgi, je lance une fonction (pour l'exemple) qui est une simple boucle qui iter de 1 une variable et la renvoi au client.

Tout ce passe bien avec plusieurs clients via une fonction interne, (une simple boucle, eventlet gère le multithread), par contre, si j'appelle un executable dans cette fonction (subprocess), seulement un seul client peut se connecter (les autres sont en attentes). Pour pouvoir servir plusieurs client, il faut que je lance plusieurs worker (ou processes) du serveur.

Le soucis, une appli SSE devrait pouvoir garder connecter, et envoyer des données à bcp de client simultanément, pour se faire, il faudrait donc lancer autant de worker que de clients potentiels ? C'est pas génial niveau ressource ça, et de plus, gunicorn accepte que 12 workers maximum ...

Pourquoi une simple fonction interne peut être utilisé pour X client simultanément, alors qu'un subprocess pour un seul client ?

Alors, ce problème est du à une incompréhension de ma part du principe du wsgi, des sous processus, des threads ?

Existe t'il une autre solution pour arriver à mes fins, sans devoir lancer X workers ?

Merci d'avance.

EDIT: eventlet utilise des "green threads", cela est sans doute la cause ...(j'ai pas trouvé bcp d'infos en français à ce sujet)
EDIT2: Avec un petit serveur http multithread python (non multi-process), j'arrive à servir 5 ou 6 client max ...! Pourquoi pas plus ?

Dernière modification par AnsuzPeorth (Le 06/10/2012, à 16:27)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne