我使用SSHChannel通過「持久性」SSHConnection。偶爾,以前關閉的localChannel將嘗試使用並導致KeyError,因爲localChannel不在SSHConnection.channels []中。twisted(17.5.0)SSHConnection使用先前關閉的通道(ssh_CHANNEL_OPEN_CONFIRMATION)
下面是一些日誌片段:
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
請注意,我對連接定時器,但我在使用之前重置這些。
我迷路了,無法確定它爲什麼「大部分時間」工作,但隨後失敗。我如何測試以防止因爲它似乎打開沒有任何明顯的錯誤。