2010-07-02 18 views
6

O CherryPy biliyorum bir çok iş parçacıklı ve aynı zamanda bir threadpool uygulaması vardır.
Yani parçacıklı davranışı gösteren bir örnek denemek istedim.
Şimdi kök sınıfta benim bazı fonksiyon ettik ve her şeyi ŞimdiCherryPy çoklu örnek

def testPage(self, *args, **kwargs): 
    current = threading.currentThread() 
    print 'Starting ' , current 
    time.sleep(5) 
    print 'Ending ' ,current 
    return '<html>Hello World</html>' 


yapılandırılmış Ben tarayıcı 3-4 sekmeler http://localhost:6060/root/testPage olarak Sayfamı çalıştırmak Diyelim edilir dinlenme diyelim. Ben olsun ne sonuç

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)> 

Ben her yeni isteği işlemek için yeni konuları yaratıyor ama her zaman
başlangıç ​​olsun neden çözemiyorum anlıyoruz açıkça görebilirsiniz şeydir ... ending..starting
..ending ve neden benim varsayım time.sleep askıya almak bazı iplik yapacak, diğeri o anda yürütebileceği ne olduğunu Çünkü bazen
starting..ending..ending ... başlangıç ​​değil.

+0

Belirli bir yazılım ile denemelisiniz, ör. httperf: httperf --server = 127.0.0.1 --port = 6060 -num-bağl = 50 --rate = 10 –

cevap

2

Bu neredeyse kesin bir tarayıcınızın sınırlama olup CherryPy'ın olduğunu. Firefox 2, örneğin, hatta birden fazla sekme ile aynı etki alanına en fazla 2 eşzamanlı istekleri yapacaktır. Ve eğer her bir sekme de bir favicon getiriyorsa ... bu, işleyicinizdeki bir anda bir vuruş bırakır.

Benzer kaynak kodlu bir bilet ve daha uzun bir kanıt için http://www.cherrypy.org/ticket/550 adresine bakın.