日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

urllib2.urlopen超时问题

發布時間:2023/12/9 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 urllib2.urlopen超时问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

urllib2.urlopen超時問題

沒有設置timeout參數,結果在網絡環境不好的情況下,時常出現read()方法沒有任何反應的問題,程序卡死在read()方法里,搞了大半天,才找到問題,給urlopen加上timeout就ok了,設置了timeout之后超時之后read超時的時候會拋出socket.timeout異常,想要程序穩定,還需要給urlopen加上異常處理,再加上出現異常重試,程序就完美了。

import?urllib2

url='http://www.facebook.com/'

fails?=?0

while?True:

????try:

????????if?fails?>=?20:

????????????break

????????req?=?urllib2.Request(url)

????????response?=?urllib2.urlopen(req,?None,?3)

????????page?=?response.read()

????except:

????????fails?+=?1

????????print?'網絡連接出現問題,?正在嘗試再次請求:?',?fails

????else:

????????break

?

--------------------------------------------------------------------------------------------------------

有時候我們在爬取網絡數據時,會因為對方網速緩慢、服務器超時等原因,

導致?urllib2.urlopen()?之后的?read()操作(下載內容)卡死,要解決這個問題方法有如下幾個:

1、為urlopen設置可選參數?timeout

import?urllib2
#?http://classweb.loxa.com.tw/dino123/air/P1000772.jpg
r?=?urllib2.Request("http://classweb.loxa.com.tw/dino123/air/P1000775.jpg")
try:
????????print?111111111111111111
????????f?=?urllib2.urlopen(r,?data=None,?timeout=3)
????????print?2222222222222222
????????result?=??f.read()
????????print?333333333333333333
except?Exception,e:
????????print?"444444444444444444---------"?+?str(e)

print?"55555555555555"

?

2、設置全局的socket超時:

import?socket
socket.setdefaulttimeout(10.0)?

或者使用:httplib2?or?timeout_urllib2

http://code.google.com/p/httplib2/wiki/Examples

http://code.google.com/p/timeout-urllib2/source/browse/trunk/timeout_urllib2.py

?

3、使用定時器?timer

from?urllib2?import?urlopen
from?threading?import?Timer
url?=?"http://www.python.org"
def?handler(fh):
????????fh.close()
fh?=?urlopen(url)
t?=?Timer(20.0,?handler,[fh])
t.start()
data?=?fh.read()????#如果二進制文件需要換成二進制的讀取方式
t.cancel()

轉載于:https://www.cnblogs.com/DjangoBlog/p/3571329.html

總結

以上是生活随笔為你收集整理的urllib2.urlopen超时问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。