2013-03-20 84 views
1

我对客户端工具使用python-requests。它会每隔一段时间对服务器进行重复请求。但是,如果服务器断开连接,则客户端将在其下一个请求中发生套接字错误而失败。看起来客户端保持连接是开放的,而不是重新连接。这些连接可能相隔数小时,所以服务器不可能不会断开连接。关闭延迟连接

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

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

这将强制连接完成后清理?

由于写入不起作用,因为requests.Response没有__ exit__调用。

回答

3

这个怎么样?

我没有测试过,只基于API文档:

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

或者,以确保密切总是被调用,即使有例外,这里是如何模拟与 - 声明使用try/finally:

s = requests.Session() 
try: 
    r = s.get(url) 
    doStuff(r) 
finally: 
    s.close() 
+2

+1。或者,你可以实际使用一个语句:'带有contextlib.closing(s):'。 – abarnert 2013-03-21 01:31:21