HTTPConnectionPool(host='xx.xx.xx.xx', port=xx): Max retries exceeded with url:(Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000015A25025EB8>, 'Connection to xx.xx.xx.xx timed out. (connect timeout=10)'))
網查說是http連接太多沒有關閉導致的
解決辦法:
1、增加重試連接次數
requests.adapters.DEFAULT_RETRIES = 5
2、關閉多余的連接
requests使用了urllib3庫,默認的http connection是keep-alive的,requests設置False關閉。
s = requests.session()
s.keep_alive = False
網搜的解決方案,我的代碼在for循環里不斷post url,的確是打開了很多連接沒關閉。
不知道是不是這個原因,加上上述3行代碼之后,代碼跑完了。
除上述改動外,timeout由原來的10改為了30。
還有另外一種說法是在上述3行代碼基礎上再掛代理,代理設置一下proxies參數即可,不貼代碼了。
不過沒有嘗試,可用的免費代理比較少,效率會非常低,不管有用否,不嘗試了。
unfortunately,第二次再跑又報如下錯誤:
HTTPConnectionPool(host=''xx.xx.xx.xx', port=xx): Max retries exceeded with url: (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x00000237EE44EF98>: Failed to establish a new connection: [WinError 10060] 由於連接方在一段時間后沒有正確答復或連接的主機沒有反 應,連接嘗試失敗。',))
太晚了,先睡了,回頭再說吧。