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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python捕捉线程错误_Pythonrequests多线程抓取出现HTTPConnectionPoolMaxretiresexceeded异常...

發(fā)布時(shí)間:2025/3/12 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python捕捉线程错误_Pythonrequests多线程抓取出现HTTPConnectionPoolMaxretiresexceeded异常... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

問題: Python requests 多線程抓取 出現(xiàn)HTTPConnectionPool Max retires exceeded異常

描述:

主要代碼如下:import threading

import requests

def get_info():

try:

res = requests.get('http://www.xxx.com/test/json')

if res.status_code == 200 and res.text != '':

print res.text

else:

print res.status_code

time.sleep(10)

get_info()

except Exception as e:

print e

def start():

threads = []

for i in range(40):

threads.append(threading.Thread(target=get_info,args=()))

for t in threads:

time.sleep(0.3)

t.start()

for t in threads:

t.join()

if __name__ == '__main__':

start()

代碼臨時(shí)寫,可能有小錯(cuò)誤,大概就是這么個(gè)意思:

開啟40個(gè)線程,間隔0.3秒請求。剛開始很正常,但是2輪過后幾乎80% 90%的請求都報(bào)異常

HTTPConnectionPool(host='http://www.xxx.com/',port=80):Max retries exceeded with url: /test/json (Caused by(class 'socked.error'):[Errno 10060])

請問是哪里出了問題?

感謝你們的回答

抓的確實(shí)是小站。

我的想法是如果服務(wù)器臨時(shí)封禁的話,應(yīng)該是報(bào)10054的錯(cuò)誤。

可看起來又像是服務(wù)器封禁,前幾輪請求都是很正常的,為什么持續(xù)時(shí)間越長,拋出的異常就越多?

重試幾次的方法我做過,似乎不太起作用:def get_info(retries=3):

if 200:

...

else:

if retries > 0:

time.sleep(5)

get_info(retries-1)

初學(xué)Python,用來作爬蟲。實(shí)際上這個(gè)問題已經(jīng)困擾我很久了。我想這個(gè)應(yīng)該是在爬蟲項(xiàng)目中很常見的問題,請問該如何著手優(yōu)化(少量異常可以接受)這個(gè)問題?解決方案1:

Python-Requests close http connection

最近我也碰到了這個(gè)問題,好像是http連接太多沒有關(guān)閉導(dǎo)致的,你可以看看這個(gè)帖子。

s = requests.session()

s.config['keep_alive'] = False

requests使用了urllib3庫,默認(rèn)的http connection 是keep-alive的,requests中可以設(shè)置False關(guān)閉。解決方案2:

可能是訪問太頻繁,被封禁了?解決方案3:

因?yàn)槟惚镜氐亩丝诓粔蛴昧恕=鉀Q方案4:

你訪問的是小站吧?我遇到過一個(gè)站,爬數(shù)據(jù)有時(shí)會出問題,不知道是服務(wù)器真力不從心還是被臨時(shí)封禁了。解決方案5:

應(yīng)該是你的服務(wù)器與目標(biāo)站之間的網(wǎng)絡(luò)連接出了問題,可以在訪問目標(biāo)站時(shí)多重試幾次..

總結(jié)

以上是生活随笔為你收集整理的python捕捉线程错误_Pythonrequests多线程抓取出现HTTPConnectionPoolMaxretiresexceeded异常...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。