1

我正在使用 python-requests 作为客户端工具。它每隔一段时间向服务器发出重复请求。但是,如果服务器断开连接,客户端将在下一次请求时失败并出现套接字错误。客户端似乎从其一侧保持连接打开,而不是重新连接。这些连接可能相隔数小时,因此服务器不太可能断开连接。

有没有办法覆盖保持活动并强制它关闭?有没有类似的东西:

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 回答