2013-03-20 81 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