2011-02-02 8 views
5

Ağa bağlı bir uygulama geliştirdiğim Twisted'de, bir kısmı Django'da yazılmış bir web arabiriminden oluşuyor.Twisted: Bir ThreadPool oluşturma ve sonra da alışılmadık görünüme yol açacak şekilde yönlendirici ipuçları

Web arabirimini barındırmak için Twisted'in WSGI sunucusunu kullanmak istiyorum ve twistd'u kullanmama izin vermek için çalışan bir "tap" eklentisi yazdım.

-n bayrağıyla sunucuyu çalıştırırken (arka plana dokunmayın) her şey iyi çalışıyor, ancak bu bayrak kaldırıldığında sunucu hiç bir şekilde isteklere yanıt vermiyor ve hiçbir ileti yok (sunucu hala koşuyor).

bug on Twisted's Trac sorunu tam olarak açıklıyor gibi görünüyor ve benim eklenti code referenced in the ticket dayanarak olur.

Maalesef, sorun düzeltilmedi ve neredeyse bir yıl önce yükseltildi.

Ben Service uzanır ve başlayan ThreadPoolService sınıf oluşturmak için çalıştılar bir startService çağrıldığında ThreadPool verilen:

class ThreadPoolService(service.Service): 
    def __init__(self, pool): 
     self.pool = pool 

    def startService(self): 
     super(ThreadPoolService, self).startService() 
     self.pool.start() 

    def stopService(self): 
     super(ThreadPoolService, self).stopService() 
     self.pool.stop() 

Ancak Twisted hiç startService yöntemini çağırarak olmak görünmüyor. Sorun şu ki, bir "tap" eklentisi ile, ServiceMaker, yalnızca başlatılacak bir hizmetini döndürebilir - ve aynı uygulamaya ait olan diğerleri başlatılmaz. Açıkçası, WSGI kökü içeren bir TCPServer hizmetini iade ediyorum. Bu noktada, biraz tuğla duvarına çarpmışımdır. Bu konuda nasıl çalışabileceğim konusunda bir fikri olan var mı?

cevap

7

MultiService öğesinden dönün ServiceMaker; ThreadPoolService'un yanı sıra ana uygulama hizmetinizi de içerir. Böyle bir şeyi montajı için API oldukça basittir:

multi = MultiService() 
mine = TCPServer(...) # your existing application service 
threads = ThreadPoolService() 
mine.setServiceParent(multi) 
threads.setServiceParent(multi) 
return multi 

Zaten Twisted içinde bu kafa karıştırıcı konu ile ilgili olarak bilet buldum göz önüne alındığında, senin yama :) görmek için sabırsızlanıyoruz.

+0

Bu mükemmel. Bunu belgelerinde neden görmediğimi bilmiyorum ama bir çekicilik gibi çalışıyor. Teşekkür ederim! –

İlgili konular