Je sais que cherrypy est un système multithread et dispose également d'une implémentation de threadpool.
J'ai donc voulu essayer un exemple montrant un comportement multithread.
Maintenant, disons que j'ai une fonction dans la classe Root et que tout le reste est configuré.
def testPage(self, *args, **kwargs):
current = threading.currentThread()
print 'Starting ' , current
time.sleep(5)
print 'Ending ' ,current
return '<html>Hello World</html>'
Maintenant, disons que je lance ma page en tant que http://localhost:6060/Root/testPage dans 3-4 onglets du navigateur.
Le résultat que j'obtiens 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)>
Je peux clairement comprendre qu'il crée de nouveaux threads pour traiter chaque nouvelle demande, mais je n'arrive pas à comprendre pourquoi chaque fois que j'obtiens
commencer... finir... commencer... finir
et pourquoi ne pas commencer...commencer...finir...finir parfois
Parce que je suppose que time.sleep va suspendre certains threads et que d'autres pourront s'exécuter à ce moment-là.