2
我已經編寫了使用twisted的應用程序框架的代理服務器。在它的核心,它使用DHT來解決問題。 DHT客戶端需要幾秒鐘才能啓動,因此我想確保代理只在DHT準備就緒後接受連接。等待扭曲的服務在啓動之前啓動另一個
# there is a class like
class EntangledDHT(object):
# connects to the dht
# create the client
dht = EntangledDHT.from_config(config)
# when it can be used this deferred fires
# i want to wait for this before creating the "real" application
dht.ready
# the proxy server, it uses the dht client
port = config.getint(section, 'port')
p = CosipProxy(host=config.get(section, 'listen'),
port=port,
dht=dht,
domain=config.get(section, 'domain'))
## for twistd
application = service.Application('cosip')
serv = internet.UDPServer(port, p)
serv.setServiceParent(service.IService(application))
如何打開EntangledDHT
成某種服務是扭曲將啓動CosipProxy
服務之前等待?是否有任何扭曲的機制爲我做到這一點?或者我必須添加一個回調到dht.ready
來創建應用程序的其餘部分?謝謝
對不起,我沒有在一段時間內回覆,我沒有時間在這方面的工作。當我把'EntangledDHT'變成IService時,它應該只在'startService'開始連接網絡,而不是在創建obhect時?我想我正在使用的庫(糾結)也沒有這麼做,因爲它定義的協議類也是'twisted.internet.reactor.listenUDP(..)'? – 2010-11-23 15:11:28