HerokuのクラウドサーバーからAWS EC2のデータベースに、REST APIを介して何億ものアイテムをデータベースにアップロードしています。 Pythonを使用していますが、ログに次のINFOログメッセージが常に表示されています。
[requests.packages.urllib3.connectionpool] [INFO] Resetting dropped connection: <hostname>
この「ドロップされた接続のリセット」には、コードが再び実行され続けるまでに数秒(場合によっては30秒以上)かかります。
ご協力いただきありがとうございます。アンドリュー。
リクエストは Keep-Alive
デフォルトで を使用します。 Resetting dropped connection
は、私の理解では、生きているはずの接続が何らかの形でドロップされたことを意味します。考えられる理由は次のとおりです。
Keep-Alive
をサポートしていません。詳細については、 https://stackoverflow.com/a/25239947/2142577 を参照してください。
問題は、クライアントが接続の維持を要求したにもかかわらず、サーバーが接続を閉じたことです。
これは、サーバーがキープアライブをサポートしていないためとは限りませんが、サーバーが接続で特定の数の要求のみを許可するように構成されている可能性があります。これは、異なるサーバーにリクエストを分散するのに役立つ可能性がありますが、このプラクティスは、サーバー(たとえばPHP)で動作する記述の不十分なコードに対する実用的な防御として一般的であると思います。リクエスト(おそらくエラー状態などによる)
これがあなたに当てはまると思い、これらのログ(INFOレベルでログに記録される)を表示したくない場合は、以下を追加して、ログのその部分を静めることができます。
# Really don't need to hear about connections being brought up again after server has closed it
logging.getLogger("requests.packages.urllib3.connectionpool").setLevel(logging.WARNING)
これは、RESTful APIを公開して悪用(またはDoS)を回避するサービスの一般的な方法です。
APIを強調している場合、接続が切断されます。
ドロップを避けるために、スクリプトをときどき少しスリープさせるようにしてください。