我正在使用 python-requests 作为客户端工具。它以一定的时间间隔向服务器发出重复的请求。但是,如果服务器断开连接,客户端将在下一个请求时失败并出现套接字错误。看来客户端正在从其一侧保持连接打开,而不是重新连接。这些连接可能相隔数小时,因此服务器不太可能不会断开连接。
有没有办法覆盖保持事件并强制其关闭?有没有类似的东西:
with requests.get(url) as r:
doStuff(r)
# R is cleaned up, the socket is closed.
这会在我完成后强制清理连接?
正如所写,这不起作用,因为 requests.Response 没有 __ exit__ 调用。
最佳答案
这个怎么样?
我没有测试过,仅基于 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()
关于python - 关闭挥之不去的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15535445/