Je sais que cherrypy est multithread et possède également une implémentation de pool de threads.
Je voulais donc essayer un exemple montrant un comportement multithread.
Maintenant, supposons que j'ai ma une fonction dans la classe racine et de repos toutes choses sont configurées
Exemple de multithreading Cherrypy
def testPage(self, *args, **kwargs):
current = threading.currentThread()
print 'Starting ' , current
time.sleep(5)
print 'Ending ' ,current
return '<html>Hello World</html>'
Maintenant, supposons que je lance ma page http://localhost:6060/root/testPage dans 3-4 onglets du navigateur.
Quel est le résultat que je reçois est
Starting <WorkerThread(CP WSGIServer Thread-10, started 4844)>
Ending <WorkerThread(CP WSGIServer Thread-10, started 4844)>
Starting <WorkerThread(CP WSGIServer Thread-7, started 4841)>
Ending <WorkerThread(CP WSGIServer Thread-7, started 4841)>
Starting <WorkerThread(CP WSGIServer Thread-10, started 4844)>
Ending <WorkerThread(CP WSGIServer Thread-10, started 4844)>
La chose que je peux comprendre clairement que cela crée de nouveaux threads pour le traitement de chaque nouvelle demande, mais je ne peux pas comprendre pourquoi chaque fois que je
... ending..starting départ ..ending
et pourquoi ne pas commencer ... starting..ending..ending parfois
Parce que mon hypothèse est que time.sleep fera un fil de suspendre et d'autres peut exécuter à ce moment-là.
Vous devriez essayer avec un logiciel spécifique, par exemple httperf: httperf --server = 127.0.0.1 --port = 6060 --num-conn = 50 --rate = 10 –