2010-04-21 5 views
1

J'utilise CherryPy afin de servir une application python via WSGI.CherryPy et la concurrence

J'ai essayé de l'évaluer, mais il semble que CherryPy ne peut gérer exactement 10 req/sec. Peu importe ce que je fais.

Construit une application simple avec une pause de 3 secondes, afin de déterminer avec précision ce qui se passe ... et je peux confirmer que les 10 req/sec n'a rien à voir avec les ressources utilisées par le script python.

__

Toutes les idées?

+0

Hey, juste une note amicale - si la réponse du diastoïde est correcte, voulez-vous la marquer comme acceptée? :) – culix

Répondre

22

Par défaut, le serveur HTTP intégré de CherryPy utilisera un pool de threads avec 10 threads. Si vous utilisez toujours les valeurs par défaut, vous pouvez essayer d'augmenter cela dans votre fichier de configuration.

[global] 
server.thread_pool = 30 
+0

@ diatoid: merci beaucoup! BTW je pensais que Cherrypy a été construit afin de soutenir la plus grande quantité de req/sec possible. – RadiantHex

+2

CherryPy essaie de définir des valeurs par défaut saines, qui produisent environ 1200 req/sec max sur mon ordinateur portable. Mais alors, ces demandes de benchmark ne prennent pas 3 secondes chacune. La réalité pour votre site devrait être quelque part au milieu; si vos demandes réelles prennent 3 secondes chacun, vous faites probablement quelque chose de mal;) – fumanchu

+0

demandes prennent 3 secondes parce qu'ils attendent des informations à recueillir ailleurs. En attendant, je n'utilise pas de sources d'informations quoi que ce soit! Alors, pourquoi dois-je laisser mon ordinateur inactif pendant que je peux répondre à plus de demandes en même temps? – RadiantHex

0

Votre client a besoin de lire réellement la réponse du serveur. Dans le cas contraire, le socket/thread restera ouvert/en cours d'exécution jusqu'à ce que le timeout et les déchets soient collectés.

utilisez un client qui se comporte correctement et vous verrez que votre serveur se comportera également.