ScénarioQuelle est la meilleure façon d'implémenter un pool de processus de travail compatibles avec gevent?
J'ai un processus serveur mis en œuvre en Python et gevent, qui se connecte à un service de back-end sur TCP/IP et le service de nombreux clients Web (~ 1000 par processus) à l'évolution rapide du contenu dynamique en fonction de la les modifications apportées par le service backend. Le service fonctionne sur Ubuntu 10.04 et ne fonctionnera pas sous Windows, donc la plateforme cible est corrigée. Nous utilisons actuellement Python 2.6.6.
Problème
Au service des changements que beaucoup de clients peuvent provoquer un retard dans le traitement des changements envoyés par le serveur, donc mon plan est de diviser le serveur en plusieurs processus. Un certain nombre de processus de travail desserviraient les clients Web, tandis que le processus principal serait toujours connecté au service backend. J'utilise déjà un pool séparé de greenlets pour servir les clients Web, mais ils doivent être mis en processus de travail.
Question
Pourriez-vous s'il vous plaît me pointer vers une mise en œuvre du pool de processus de travail pour gevent ou savoir comment puis-je utiliser le module propre multitraitement Python avec gevent la bonne façon?
Restrictions
Je voudrais éviter d'introduire des fils Python dans nos processus, car cela donne place à contention GIL, ce qui réduirait les performances en introduisant des latences. Ce serait donc une solution multiprocessing + gevent propre, si possible.
Merci pour votre réponse. J'ai fini par implémenter le socket IPC personnalisé. – fviktor
On dirait que vous aviez raison à ce sujet. L'utilisation de ZeroMQ est la meilleure solution dans de nombreux cas. – fviktor