2017-07-05 11 views
0

私はSSHChannelを "固定" SSHConnectionで使用します。時には、以前に閉じられたlocalChannelが使用されようとし、localChannelがSSHConnection.channels []にないためにKeyErrorが発生することがあります。ここでtwisted(17.5.0)以前に閉じたチャネル(ssh_CHANNEL_OPEN_CONFIRMATION)を使用したSSH接続

は、いくつかのログの抜粋です:

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 

注:その後、(いくつかの新しいチャネルの後に)、私はこれを参照してください。

私は迷子になり、なぜ「ほとんどの時間」機能するのかを判断できませんが、ランダムに失敗します。どのように目立つエラーなしで開くように見えるので、私はどのようにして防ぐためにテストすることができます。

答えて

0

私のコードを見せびらかしている人たちと話をした後、私は最小限のsinglefilefile.pyアプリケーションを使ってテストを実行しましたが、問題は一度もありませんでした。観察者は現実を変えた?

その後、私は長い間前にねじれて動く前にそこにあったアプリケーションのいくつかのスレッドがあることに気付きました。彼らは決して他の方法で自分自身を明らかにしなかった。

私はPythonスレッドを削除しましたが、今はチャネルの問題なしで実行しています。 (ちなみに、チャンネルの問題を解決するには、チャンネルを開いて再開することができますが、それはうまくいくでしょうが、コードから回避するのがうれしいです)

関連する問題