0

離れた場所にある機器を監視するためにGraphiteサーバーを実行しています。サーバーからマシンへの「永続的な」sshトンネル(autosshが大好き)があり、ローカルポートをサーバーのローカルポートにマップしています。これはうまく機能し、データは手間をかけずに通過します。ただし、サイトへの不安定な衛星接続を使用します。これはかなり定期的に停止します。Pythonを実行している機器で「データクローラー」を実行しており、ソケットを使用してパケットをGraphiteサーバーに送信しています。問題は、リンクが一時的にダウンした場合(または、ほとんどの場合テストのためにサーバーが再起動した場合)、サーバーへの接続を再確立できないことです。エラーをトラップし、socket.close()を実行してから再度開きますが、接続を再確立できません。Pythonプログラムを終了して再起動すると、接続は正常に起動します。

4

1 に答える 1

0

コード サンプルがなければ、これに正しく答えるのは困難です。ただし、 close を再利用しようとしているようにsocket思えますが、これは不可能です。

ソケットが閉じられた (またはエラーが発生した) 場合は、新しいソケット オブジェクトを使用して新しい接続を再作成する必要があります。これが機能するには、リモート サーバーがその accept() ループで複数のクライアント接続を処理できる必要があります。

于 2012-06-26T19:54:10.233 に答える