0

これを実行して複数のクライアントを作成する場合:

def main():
    clients = [None]*10

    for i in range(0, 10):
        clients[i] = ClientFactory()
        reactor.connectTCP('192.168.0.1', 8000, clients[i])

    reactor.run()

どうすれば原子炉を安全に停止できますか? 私が行った場合:

self.transport.loseconnection()

プロトコルで、次のようにします。

reactor.stop()

工場では、次のクライアントが再び原子炉を停止しようとします。ただし、これはもちろんエラーにつながります。

Can't stop a reactor that isn't running

このようなシナリオで原子炉を正常に停止するにはどうすればよいですか?

4

2 に答える 2

0

Twisted で何かをするのは久しぶりですが、reactor.runningまずプロパティの値を確認していただけないでしょうか。例えば、

# Gracefully stop the reactor
if reactor.running:
    reactor.stop()
于 2013-06-25T04:11:38.407 に答える
0

原子炉管理コードをプロトコルの実装から取り除きます。これを、接続が必要なすべての処理をいつ完了したかを知るために使用できるイベント通知コードに置き換えます。たとえば、 を発射しDeferredます。

次に、すべての deferred を待ち、すべて完了したらリアクターを停止します。これには役立つかもしれませんgatherResults

于 2013-06-25T11:57:42.773 に答える