python - 关闭挥之不去的连接

标签 python python-requests

我正在使用 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/

相关文章:

具有重复键但值不同的python3字典

Python 请求 - 发布索引数组

python - 如何使用Python点击selenium webdriver中的::before/::after CC标签?

python - Matplotlib:重新排序子图

python - sqlite3.操作错误: no such table: django_content_type

python - 如何使用 M2Crypto 从 .pem 文件加载受密码保护的私钥?

python - Pandas:将多索引列标题转换为普通列标题?

Python requests.packages.urllib3.connection.VerifiedHTTPSConnection [Errno 11004]

python-requests,找到正确的编码

python - 如何使用 Selenium 和 Python 请求以编程方式识别 ReCaptcha V2 的 32 位数据站点 key 以获取有效响应?