我在“持久”SSHConnection 上使用 SSHChannel。有时,以前关闭的 localChannel 会尝试使用并导致 KeyError,因为 localChannel 不在 SSHConnection.channels[] 中。
以下是一些日志片段:
2017-07-05 07:54:50-0500 [-] openChannel localChannelID=2
2017-07-05 07:54:50-0500 [-] opening channel 2 with 65536 32768
2017-07-05 07:54:50-0500 [SSHChannel session (2) on SSHService 'ssh-connection' on ClientTransport,client] sending close 2
2017-07-05 07:54:50-0500 [SSHService 'ssh-connection' on ClientTransport,client] channelClosed id=2
所以现在通道 2 已关闭。后来(在几个新频道之后),我看到了这个:
2017-07-05 08:54:55-0500 [-] openChannel localChannelID=2
2017-07-05 08:54:55-0500 [-] opening channel 2 with 65536 32768
2017-07-05 08:54:55-0500 [SSHService 'ssh-connection' on ClientTransport,client] Unhandled Error Traceback (most recent call last):
<snipped irrelevant>
File "/usr/local/lib/python2.7/dist-packages/twisted/conch/ssh/connection.py", line 180, in ssh_CHANNEL_OPEN_CONFIRMATION channel = self.channels[localChannel]
exceptions.KeyError: 2
请注意,我在连接上有计时器,但我在使用前重置了这些计时器。
我迷路了,无法确定为什么它“大部分时间”都有效,但随后随机失败。我该如何测试以防止它似乎打开而没有任何明显的错误。