用了requests庫,爬取了一晚上,程式在某個頁面hang住了,沒有任何報錯資訊,也不退出,也不前進,日誌和程序查不出問題。
操作回顧:
檢視nohup.out,無任何異常資料;
檢視程式log,在183頁有資料,184頁資料未出現;
ps aux |grep 檢視程序,未占用大量cpu和記憶體,排除死迴圈;
檢視**,未使用多執行緒多程序,排除死鎖;
檢視問題程序開啟的檔案,lsof -p xx,發現最後開啟的檔案是建立了2個tcp連線,並且一直未斷開,考慮io阻塞的可能性;
再次檢視**,設定了io連線重試,未設定連線超時,但自己一直以為requests庫有預設超時,故不得其解;
再次lsof檢視,跟進lsof -i:port看建立的是什麼連線埠,發現是https
網上搜尋requests庫超時重試問題,得到下面一句話:
讀取超時是沒有預設值的,如果不設定,程式將一直處於等待狀態
豁然開朗!
一直以為的預設超時是連線超時,預設2s,並且session中通過adapter設定的retry重試也是簡單的預設針對連線超時超時,除非使用retry物件詳細指定超時機制。
解決方法:
然後可以用retry指定session中的adapter讀取超時重試次數;
python多程序爬蟲卡住 Python多程序爬蟲
匯入第3方庫 from bs4 import beautifulsoup from spider.extra import utils from multiprocessing import process,value,joinablequeue,manager,pool import thread...
VS報錯資訊
今天開啟本地頁面發現載入的資源有報錯資訊,404,找不到了。後來發現這個資源檔案我都沒見過,找了半天沒找到,更加神奇的是,過了一會,因為頁面重新生成,我又開啟了一次這個頁面,發現報錯資訊都沒有了。老大告訴我這是vs編輯器報的錯,可以不用理會。可是我還是沒懂是什麼問題?於是稍微研究下了一下。先說一下,...
python 爬蟲 報錯 求救
在找到某度文庫文件的js檔案鏈結後想用json.loads 進行解析 以上為鏈結的js 檔案 import json import re deffetch url url headers session requests.session return session.get url,headers ...