3

私はツイスト マンホール (https://github.com/HoverHell/pyaux/blob/master/pyaux/runlib.py#L126) を使用しており、ツイストによってキャッチされたエラーを Python ログ (https://github. com/HoverHell/pyaux/blob/master/pyaux/twisted_aux.py#L9)。

ただし、結果としてログにエラーが発生するため、エラーConnectionDone()としてはあまり興味深いものではありません。

この(および、おそらく他の)正確ではないエラーを回避するには、何を変更するのが適切でしょうか? twisted.python.failure.Failureおそらく、ケースのフィルタリングですか?そして、 ConnectionDone() が発生したのはどこからですか?なぜですか?

4

1 に答える 1

7

ConnectionDone() インスタンスは、接続が閉じられた後に connectionLost() コールバックに渡されます。クライアント側が接続を閉じることを決定したときに、これが表示されるはずです。失敗を除外したくないことは間違いありません。失敗は、例外の「非同期アナロジー」と考えることができます。ある種の例外を見ないために通常行うことは、次のようなものです。

from twisted.internet import error

...

def connectionLost(self, reason):
    if reason.check(error.ConnectionDone):
        # this is normal, ignore this
        pass
    else:
        # do whatever you have been doing for logging
于 2013-01-27T00:04:07.287 に答える