持っている
class CnxAwareSite(server.Site):
def __init__(self, *args, **kwargs):
server.Site.__init__(self, *args, **kwargs)
self.cnx_cnt = 0
def buildProtocol(self, addr):
channel = server.Site.buildProtocol(self, addr)
def cntCnxMade(f):
self.cnx_cnt += 1
print 'new conn', self.cnx_cnt
return f
channel.connectionMade = cntCnxMade(channel.connectionMade)
def cntCnxLost(f):
def post_wrap(result):
self.cnx_cnt -= 1
return result
return lambda *args, **kwargs: post_wrap(f(*args, **kwargs))
channel.connectionLost = cntCnxLost(channel.connectionLost)
return channel
...
site = CnxAwareSite(root)
site.port = reactor.listenTCP(PORT, site)
トリガーをインストールし、site.port.stopListening()に遅延チェーンされたsite.cnx_cntの非同期ループチェックを実行します。
reactor.addSystemEventTrigger('before', 'shutdown', shutdown, site)
原子炉を停止する前にサービスの「クリーンシャットダウン」を確実にする正しい方法ですか?
ツイストを使用することは私にとってオプションではありません...(ため息)