亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

requests如何在不下載響應體的情況下重用連接?

requests如何在不下載響應體的情況下重用連接?

蕪湖不蕪 2019-02-24 21:08:08
實際需求場景是想讓爬蟲只通過檢驗http的返回碼,以此校驗之前下載的某個資源是否還在線;因為并不需要下載響應體,所以使用了requests的Session對象并在動詞方法中添加了stream = True的參數,如下: s = requests.Session() s.mount('http://', requests.adapters.HTTPAdapter(pool_connections=1, pool_maxsize=1)) for i in range(20): url = "http://www.site.com/resources/%s" % i with closing(s.get(url, allow_redirects = False, stream = True)) as r: print r.status_code 因為啟用了stream = True模式,未下載響應體的情況下,連接不會關閉,肯定是無法重用連接池中的連接了,可是強制關閉連接的話,日志輸出是這樣: INFO - connectionpool.py[249] - Resetting dropped connection: www.site.com 感覺這個“Resetting dropped connection”跟文檔里寫的不太一致呢? requests的文檔中寫道: 如果你在請求中把 stream 設為 True,Requests 無法將連接釋放回連接池,除非你 消耗了所有的數據,或者調用了 Response.close。 文檔說關閉響應后Requests應該被“釋放回連接池”,但實際上它是被關閉然后再需要時被“重新設置”了,跟不加stream = True參數時,“無縫”重用似乎是不一樣的。 那么究竟該怎么做才能做到既不下載相應體,又能重用連接呢?還有關閉請求、關閉連接應該是一回事吧?
查看完整描述

目前暫無任何回答

  • 0 回答
  • 0 關注
  • 1273 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號