現在、2 つのサーバーを持つアプリケーションがあります。最初のサーバーは注文を処理して個別に応答し、2 番目のサーバーは結果を他の関心のあるサブスクライバーにブロードキャストします。それらは異なるポートから提供される必要があります。両方を start() できますが、ブロッキング関数であると読んでいるため、 serve_forever() に取得できるのはどちらか一方だけです。両方のサーバーが終了しないようにする方法についてのアイデアを探しています。以下の短縮コード:
def main():
stacklist = []
subslist = []
stacklist.append(CreateStack('stuff'))
subslist.append(Subscription('stuff'))
bcastserver = BroadcastServer(subslist) # creates a new server
tradeserver = TradeServer(stacklist) # creates a new server
bcastserver.start() # start accepting new connections
tradeserver.start() # start accepting new connections
#bcastserver.serve_forever() #if I do it here, the first one...
#tradeserver.serve_forever() #blocks the second one
class TradeServer(StreamServer):
def __init__(self, stacklist):
self.stacklist = stacklist
StreamServer.__init__(self, ('localhost', 12345), self.handle)
#self.serve_forever() #If I put it here in both, neither works
def handle(self, socket, address):
#handler here
class BroadcastServer(StreamServer):
def __init__(self, subslist):
StreamServer.__init__(self, ('localhost', 8000), self.handle)
self.subslist = subslist
#self.serve_forever() #If I put it here in both, neither works
def handle(self, socket, address):
#handler here
おそらく、この 2 つが終了しないようにする方法が必要なだけかもしれませんが、方法がわかりません。最後に、両方のサーバーが着信接続を永遠にリッスンして処理するようにします。