成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python 頻繁請求問題: [Errno 104] Connection reset by pee

BearyChat / 3313人閱讀

摘要:之前我是做了錯誤記錄直接了,這次情況下因為需要請求所有圖片,在查了相關原因,大概是因為我頻繁請求,服務器關閉了部門請求連接。在實際的請求中,加了的延遲被拒絕的情況明顯少了很多,被拒絕重試的次數(shù)最多為次,最后成功地取下了全部圖片。

記遇到的一個問題:[Errno 104] Connection reset by peer

今天工作上有個需求,數(shù)據(jù)庫有個表有將近3萬條url記錄,每條記錄都是一個圖片,我需要請求他們拿到每個圖片存到本地。一開始我是這么寫的(偽代碼):

import requests

for url in urls:
    try:
        r = requests.get(url).content
        save_image(r)
    except Exception, e:
        print str(e)

然而在服務器上運行時, 會發(fā)現(xiàn)每隔一些請求會報類似下面的錯誤:

HTTPConnectionPool(host="wx.qlogo.cn", port=80): Max retries exceeded with url: /mmopen/aTVWntpJLCAr2pichIUx8XMevb3SEbktTuLkxJLHWVTwGfkprKZ7rkEYDrKRr5icyDGIvU4iasoyRrqsffbe3UUQXT5EfMEbYKg/0 (Caused by : [Errno 104] Connection reset by peer)

這讓我想起了之前通過hacker news api 在自己電腦上請求一條一條數(shù)據(jù)時,為了加快處理速度,采用多進程的方式請求接口,也會出現(xiàn)這樣的錯誤。之前我是做了錯誤記錄直接pass了,這次情況下因為需要請求所有圖片,在google查了相關原因,大概是因為我頻繁請求,服務器關閉了部門請求連接。參見這里, 這里, 這里。
所以我粗暴地這么做,還真解決了:

import requests

for url in urls:
    for i in range(10):
        try:
            r = requests.get(url).content
        except Exception, e:
            if i >= 9:
                do_some_log()
            else:
                time.sleep(0.5)
        else:
            time.sleep(0.1)
            break

     save_image(r)

代碼很簡陋,但可以說明大體解決方案,在每個請求間增加延時可以減少大部分請求拒絕,但還是存在一些請求被拒絕的,所以在那部分請求被拒絕后,發(fā)起重試,在被拒10次后才善罷甘休(記錄到日志)。在實際的請求中,加了0.1s的延遲被拒絕的情況明顯少了很多,被拒絕重試的次數(shù)最多為3次,最后成功地取下了全部圖片。

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/44274.html

相關文章

  • Socket Error 104 bug

    摘要:概述技術棧錯誤詳情報警機器人經(jīng)常有如下警告過程確定報錯位置有日志就很好辦首先看日志在哪里打的從三個地方入手我們自己的代碼沒有的代碼從上下來沒有的代碼在容器中執(zhí)行 bug概述 技術棧 nginx uwsgi bottle 錯誤詳情 報警機器人經(jīng)常有如下警告: 1 2018-xx-xxT06:59:03.038Z 660ece0ebaad admin/admin 14 - - Sock...

    keithyau 評論0 收藏0
  • SocketServer 源碼分析

    摘要:版權出現(xiàn)則重新調用注冊函數(shù)。中實例化,調用用戶定義的函數(shù)服務循環(huán)監(jiān)聽端口處理請求調用監(jiān)視請求,處理異常有請求進來停止循環(huán)通知外部,循環(huán)已經(jīng)退出注意的用法,只設置一次,避免使用進行頻繁的設置清除。 SocketServer.py Creating network servers. contents SocketServer.py contents file head BaseSer...

    Eric 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<