2013-05-24 4 views
2

je lance mon code CherryPy commeCherryPy: multitraitement

python -u myApp.py 

Il fonctionne très bien. Cependant, quand je fais ps ax | grep myApp je peux voir 21 copies de python -u myApp.py en cours d'exécution. Pourquoi est-ce et qu'est-ce que c'est?

+2

Il a un serveur web intégré qui démarre les enfants pour gérer les connexions comme Apache. – Cfreak

+0

Utilisez-vous le module multitraitement dans votre code? – cyraxjoe

+0

Plz, postez votre code. Cherrypy a un thread d'écoute de socket et plusieurs threads qui gèrent les requêtes. Votre code doit démarrer les processus. Écoutez-vous plusieurs ports? Utilisez-vous https Apache? Les processus multiples ne sont utiles que pour les tâches intensives du processeur, et non pour la gestion des requêtes HTTP rapides. –

Répondre

1

CherryPy utilise plusieurs threads pour gérer les connexions. Vous pouvez contrôler le nombre d'utilisations en modifiant les paramètres ThreadPool.

Il y a quelques détails sur la façon dont le thread de travail fonctionne in the WSGI docs:

  • thread d'écoute du serveur exécute une boucle très serrée, coller les connexions entrantes sur une file d'attente
  • threads travailleurs sont conservés dans une piscine et interroger la file d'attente, sauter puis gérer chaque connexion
  • Chaque connexion peut consister en un nombre arbitraire de demandes et de leurs réponses

Vous pourriez probablement réduire le nombre de threads dans le pool de threads si vous ne voulez vraiment pas les utiliser, mais cela peut réduire les performances.