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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277149.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277149.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277149.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

git 關聯遠程分支

問題解析: git本地新建一個分支后,必須要做遠程分支關聯。如果沒有關聯, git 會在下面的操作中提示你顯示的添加關聯。關聯目的是如果在本地分支下操作: git pull, git push ,不需要指定在命令行指定遠程的分支&#x…

Sql Server 常用日期格式

http://www.cnblogs.com/waitu/archive/2006/01/16/318299.html 轉載于:https://www.cnblogs.com/passrift/archive/2006/09/29/517939.html

del服務器能裝win7系統嗎,500系列主板能不能裝win7?500系列主板裝win7教程(支持11代)...

今年intel發布了第十一代酷睿cpu,當前有些網友還停留在win7時代,對win7是戀戀不忘,以前經常聽到討論是400系列主板安裝win7的問題,到了2021年我們應該換一個話題,就是500系列主板能安裝win7嗎?小編在這里可…

代碼可讀性心理學

寫在前面的話: 這周末我一個同學在群上說找到一篇挺有意思的文章(就是下面要說的可讀性代碼的心理學),說要翻譯出來,我就主動請纓了,跟他合作翻譯這篇文章,在看這篇文章的同時,我突然…

帶圖片的,多列的DropDownList的實現

下面是模仿的DropDownList的效果,支持圖片,多列,換行等。查看例子 WebDropDownList.aspx 模擬下拉列表框模擬下拉框請選擇?6北京市上海市河南省深圳市大連市云南省WebDropDownList.aspx.cs using System; using System.Collection…

手機連接服務器傳文件在哪里,手機云服務器傳文件在哪里

手機云服務器傳文件在哪里 內容精選換一換華為云幫助中心,為用戶提供產品簡介、價格說明、購買指南、用戶指南、API參考、最佳實踐、常見問題、視頻幫助等技術文檔,幫助您快速上手使用華為云服務。如果私鑰文件丟失了,可以為服務器替換新的密…

本周ASP.NET英文技術文章推薦[03/25 - 03/31]

摘要 本期共有6篇文章: ASP.NET AJAX:客戶端事件查看器JavaScript和.NET中的JavaScript對象標記(JSON)介紹在ASP.NET 2.0應用程序中使用NHibernate和Log4Net在數據Web控件中顯示二進制數據為什么異步回送時不能使用文件上傳&…

忙的日子

很久沒有這么正兒八經的忙了,腦子里很多事的日子忽然覺得很不適應。兩個人的工作都算塵埃落定,也許是憂患意識持續得太久了,沒有太多的驚喜和踏實,卻想著福兮禍之所依。很久不做夢了,忽然有夢時卻總是校園里那些人那些…

虛擬機服務器斷網,Vmware虛擬機斷網不能上網的解決方法教程[多圖]

vmware虛擬機不能上網怎么辦?正常來說在給虛擬機安裝了系統之后,虛擬機是可以共享電腦的網絡進行上網的,但是最近有用戶反映vmware虛擬機出現不能上網的問題,這該怎么辦呢?請看下文具體介紹。方法1:1、我們…

本周ASP.NET英文技術文章推薦[09/30- 07/13]:.NET Framework、JSON、Google Analytics、文件上傳、GridView、IIS 7、Web開發...

摘要 本期共有9篇文章: .NET Framework源代發發布Tip/Trick:在.NET 3.5中編寫ToJSON擴展方法在Google Analytics中統計訪客瀏覽器的Silverlight啟用狀況使用文本編輯器開發并部署ASP.NET Web應用程序在ASP.NET 2.0中編寫類似Gmail的文件上傳系統各種非…

深入剖析Redis系列(四) - Redis數據結構與全局命令概述

前言Redis 提供了 5 種數據結構。理解每種數據結構的特點,對于 Redis 的 開發運維 非常重要,同時掌握 Redis 的 單線程命令處理 機制,會使 數據結構 和 命令 的選擇事半功倍。接下來的幾篇文章,將從如下幾個方面介紹 Redis 的幾種…

網易云服務器上傳文件,網易云音樂怎么把音樂上傳到云盤 網易云音樂把音樂上傳到云盤的步驟方法...

現在很多用戶保存文件都會選擇保存到網盤,喜歡的音樂也是一樣,網易云音樂早已引入了云盤功能,不過上傳的方法相信有很多朋友都不知道,下面小編為大家帶來網易云音樂把音樂上傳到云盤的步驟方法,感興趣的朋友可以進來了…

MOSS 2007基礎:內容類型(Content Type)之二

原文地址:http://www.msd2d.com/Content/Tip_viewitem_03NoAuth.aspx?ida14f3443-c394-4950-a048-8394bcce749b&sectionSharepoint 上次,我們說到MOSS 2007中的內容類型。下面我們將繼續該話題,更深入了解其特性。在開始之前&#xff0c…

7.18 collection random os sys等模塊

7.18 collection random os sys等模塊 collection模塊 應用場景1 # 具名元組 # 想表示坐標點x為1 y為2 z為5的坐標 from collections import namedtuple # point namedtuple(坐標,[x,y,z]) # 第二個參數既可以傳可迭代對象 point namedtuple(坐標,x y z) # 也可以傳字符串 …

結對作業

1、要求地址 博客要求地址:https://www.cnblogs.com/happyzm/p/9626779.htmlFork碼云項目地址:https://gitee.com/YeHei/PairProject-Java/tree/master結對伙伴:余碩銘 博客地址:https://gitee.com/hellolv/PersonalProject-Java2…

leetcode(34)在排序數組中查找元素的第一個和最后一個位置

在排序數組中查找元素的第一個和最后一個位置 class Solution {public int[] searchRange(int[] nums, int target) {int len nums.length;int start 0;int end len - 1;int mid 0;int temp 0;while(start<end){mid (startend)/2;if(nums[mid]>target){end mid - …

縮略圖不變形

Public Shared Sub MakeSmallImg(ByVal postFile As System.Web.HttpPostedFile, ByVal saveImg As String, ByVal Width As System.Double, ByVal Height As System.Double) Dim originalFilename As String postFile.FileName 生成的高質量圖片名稱 Dim strGo…

spring boot druid 監控沒有sql記錄

2019獨角獸企業重金招聘Python工程師標準>>> 1 之前配置了 druid的監控 但是 調用查詢后 監控沒有記錄&#xff0c;查了下原因 發現是因為依賴打入錯誤 <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starte…

noip2014聯合權值

http://codevs.cn/problem/3728/ 我們要做的是計算距離為2的有序對權值之和及最大值&#xff0c;最大值好弄&#xff0c;但一一枚舉是不可行的&#xff0c;因為n<200000&#xff0c;我們可以預處理一下&#xff0c;每次讀入邊的時候我們把與當前頂點有邊相連的所有點的權值中…

11月30在spring mvc中使用Validator框架和文件上傳

首先回顧了spring mvc中的表單驗證和業務邏輯校驗失敗后&#xff0c;回到表單頁面中顯示錯誤信息的整個內部運行流程。表單校驗出錯后回到表單注冊頁面是由默認的SimpleFormController的processFormSubmission方法自動完成的&#xff0c;王濤忘記這一點&#xff0c;他們覆蓋了p…