看板 Python 關於我們 聯絡資訊
我在寫一支程式 它會使用urllib.URLopener()開啟檔案連結,並使用retrieve函式將檔案儲存 但有時候可能是目標server的問題,執行到retrieve的時候會整個卡住,且程式不會停止 因為檔案只有幾十KB而已,所以時間上應該都不會超過10秒 想說可以給retrieve設個timeout,假設10秒,若超過10秒就自動重試 請問有辦法做到嗎?謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.216.176.184 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1451362103.A.D3F.html
kenduest: 用 requests , requests.get() 可傳 timeout 方式看看 12/29 12:53
kenduest: urllib open 似乎也有 timeout, 不過整個不符合你需求 12/29 13:10
kenduest: 抱歉回應沒有回答到答案 12/29 13:23
ocean5566: try .... except .... 12/29 21:25
ocean5566: * 加上 while 若抓完了就break出去 12/29 21:26
kenduest: 這個問題剛想到似乎得用 gevent 方式來解決才會簡單 12/29 22:39
kenduest: 不過檔案很小感覺一般不需要這種方案才對 12/29 22:41
kenduest: 若檔案很大,一般大多使用 requests 會搭配 stream=True 12/29 22:41
kenduest: 然後iter_content() 方式指定chunk size 讀進來處理 12/29 22:42