web-dev-qa-db-ja.com

python:[Errno 10054]既存の接続がリモートホストによって強制的に閉じられました

私はpython Twitter-pyを使用してTwitterスペースをクロールするために書いています。実行回数(約1回)、Twitterのレート制限がまだ超えていないときに、このエラーが発生しました。

[Errno 10054] An existing connection was forcibly closed by the remote Host.

この問題の考えられる原因とこれを解決する方法は何ですか?

私は検索を行ったところ、多くのリクエストが原因でTwitterサーバー自体が接続を強制的に終了する可能性があることがわかりました。

事前にどうもありがとうございました。

28
Nama Keru

これは、キープアライブ中に接続がタイムアウトしたかどうかで、接続の両側が一致しないために発生する可能性があります。 (サーバーは、アイドル状態が長すぎるため、サーバーが閉じているように、コードは接続を再利用しようとします。)基本的には、新しい接続で操作を再試行する必要があります。 (ライブラリがこれを自動的に行わないことに驚いています。)

10
David Schwartz

などの多くの原因があります

  • サーバーとクライアント間のネットワークリンクが一時的にダウンしている可能性があります。
  • システムリソースが不足しています。
  • 不正なデータを送信しています。

問題を詳細に調べるには、Wiresharkを使用できます。

または、単に再要求または再接続することができます。

私にとって、この問題はSAP Hanaデータベースに接続しようとしたときに発生しました。このエラーが発生したとき、

OperationalError:HANAサーバーへの接続が失われました(ConnectionResetError(10054、「既存の接続はリモートホストによって強制的に閉じられました」、なし、10054、なし))

接続用のコード(下記を参照)を実行しようとすると、そのエラーが再度発生し、機能しました。

 
 import pyhdb 
 connection = pyhdb.connect(Host = "example.com"、port = 30015、user = "user"、password = "secret")
 cursor = connection.cursor()
 cursor.execute( "SELECT 'Hello Python World' FROM DUMMY")
 cursor.fetchone()
 connection.close()
 

サーバーが接続を拒否したためです。しばらく待ってから再試行する必要がある場合があります。ログオフしてから再度ログインして、Hana Studioを閉じてみてください。コードを何度も実行し続けます。

0
Sreeja