1

クライアントツールにpython-requestsを使用しています。間隔を置いてサーバーに繰り返し要求を行います。ただし、サーバーが切断されると、クライアントは次の要求でソケットエラーで失敗します。クライアントは、再接続するのではなく、その側から接続を開いたままにしているようです。これらの接続は数時間離れている可能性があるため、サーバーが接続を切断しない可能性はほとんどありません。

keep aliveをオーバーライドして、強制的に閉じる方法はありますか?次のようなものはありますか?

with requests.get(url) as r:
  doStuff(r)
# R is cleaned up, the socket is closed.

それは私が終わった後に接続をクリーンアップすることを強制しますか?

書かれているように、requests.Responseには__exit__呼び出しがないため機能しません。

4

1 に答える 1

3

これはどう?

APIドキュメントのみに基づいてテストしていません。

s = requests.Session()
r = s.get(url)
doStuff(r)
s.close()

または、例外が発生した場合でも、closeが常に呼び出されるようにするには、try/finallyを使用してwithステートメントをエミュレートする方法を次に示します。

s = requests.Session()
try:
    r = s.get(url)
    doStuff(r)
finally:
    s.close()
于 2013-03-21T00:50:11.927 に答える