感謝做者分享-http://bjbsair.com/2020-04-07...html
圖/文:迷神python
從以前寫的 【Python登錄小米路由器撥號更換IP,繞過網站反爬IP限制機制】咱們就能夠看到python有一種重試機制,很好用。特別是在寫爬蟲的時候,簡直是python爬蟲必備利器。python爬蟲
工做中也常常碰到的問題就是,某個方法出現了異常,重試幾回。循環重複一個方法是很常見的。好比爬蟲中的獲取代理,對獲取失敗的狀況進行重試。或者是python爬蟲爬取網頁的內容的時候出現錯誤,也須要使用重試等,在爬蟲領域,這個模塊應該仍是很不錯的。dom
人生苦短啊函數
pip install retrying #安裝
retrying提供一個裝飾器函數retry,被裝飾的函數會在運行失敗的狀況下從新執行,默認一直報錯就一直重試。咱們先看下咱們以前的一段代碼:網站
from retrying import retry @retry(stop_max_attempt_number=50000,wait_fixed=2000) def tyc(): #代碼 if __name__ == '__main__': tyc()
這個裏面retry的裝飾器,有2個參數,stop_max_attempt_number 表明最大重試次數,wait_fixed 代碼,間隔多久進行重試。spa
他的其餘參數用法有,我羅列一些我開發過程經常使用的給你們,但願對你們有幫助,基本上這些都夠用了:代理
# 設置方法的最大延遲時間,默認爲100毫秒(是執行這個方法重試的總時間) @retry(stop_max_attempt_number=5,stop_max_delay=50)
# 添加每次方法執行之間的等待時間 @retry(stop_max_attempt_number=5,wait_fixed=2000) # 隨機的等待時間 @retry(stop_max_attempt_number=5,wait_random_min=100,wait_random_max=2000) # 每調用一次增長固定時長 @retry(stop_max_attempt_number=5,wait_incrementing_increment=1000)
其餘的還有參數:code
一、 stop_max_attempt_number 在中止以前嘗試的最大次數,最後一次若是仍是有異常則會拋出異常,中止運行二、stop_max_delay 最大延遲時間htm
三、wait_fixed:兩次調用方法期間停留時長,默認1000毫秒,1秒
四、wait_random_min:在兩次調用方法停留時長,停留最短期,默認爲0
五、wait_random_max:在兩次調用方法停留時長,停留最長時間,默認爲1000毫秒
六、wait_incrementing_increment:每調用一次則會增長的時長,默認 100毫秒
七、wait_exponential_multiplier和wait_exponential_max:以指數的形式產生兩次retrying之間的停留時間,產生的值爲2^previous_attempt_number * wait_exponential_multiplier,previous_attempt_number是前面已經retry的次數,若是產生的這個值超過了wait_exponential_max的大小,那麼以後兩個retrying之間的停留值都爲wait_exponential_max
八、retry_on_exception: 指定一個函數,若是此函數返回指定異常,則會重試,若是不是指定的異常則會退出
九、retry_on_result:指定一個函數,若是指定的函數返回True,則重試,不然拋出異常退出
使用比較簡單,用的最多的不外乎:stop_max_attempt_number,stop_max_delay 這兩個。其餘還有一些,你們能夠去參考文檔。
好了,就這麼多啦,我是迷神,更多精彩,記得關注我哦,請多多轉發,有問題也能夠評論哦。感謝做者分享-http://bjbsair.com/2020-04-07...
圖/文:迷神
從以前寫的 【Python登錄小米路由器撥號更換IP,繞過網站反爬IP限制機制】咱們就能夠看到python有一種重試機制,很好用。特別是在寫爬蟲的時候,簡直是python爬蟲必備利器。
工做中也常常碰到的問題就是,某個方法出現了異常,重試幾回。循環重複一個方法是很常見的。好比爬蟲中的獲取代理,對獲取失敗的狀況進行重試。或者是python爬蟲爬取網頁的內容的時候出現錯誤,也須要使用重試等,在爬蟲領域,這個模塊應該仍是很不錯的。
人生苦短啊
pip install retrying #安裝
retrying提供一個裝飾器函數retry,被裝飾的函數會在運行失敗的狀況下從新執行,默認一直報錯就一直重試。咱們先看下咱們以前的一段代碼:
from retrying import retry @retry(stop_max_attempt_number=50000,wait_fixed=2000) def tyc(): #代碼 if __name__ == '__main__': tyc()
這個裏面retry的裝飾器,有2個參數,stop_max_attempt_number 表明最大重試次數,wait_fixed 代碼,間隔多久進行重試。
他的其餘參數用法有,我羅列一些我開發過程經常使用的給你們,但願對你們有幫助,基本上這些都夠用了:
# 設置方法的最大延遲時間,默認爲100毫秒(是執行這個方法重試的總時間) @retry(stop_max_attempt_number=5,stop_max_delay=50)
# 添加每次方法執行之間的等待時間 @retry(stop_max_attempt_number=5,wait_fixed=2000) # 隨機的等待時間 @retry(stop_max_attempt_number=5,wait_random_min=100,wait_random_max=2000) # 每調用一次增長固定時長 @retry(stop_max_attempt_number=5,wait_incrementing_increment=1000)
其餘的還有參數:
一、 stop_max_attempt_number 在中止以前嘗試的最大次數,最後一次若是仍是有異常則會拋出異常,中止運行二、stop_max_delay 最大延遲時間
三、wait_fixed:兩次調用方法期間停留時長,默認1000毫秒,1秒
四、wait_random_min:在兩次調用方法停留時長,停留最短期,默認爲0
五、wait_random_max:在兩次調用方法停留時長,停留最長時間,默認爲1000毫秒
六、wait_incrementing_increment:每調用一次則會增長的時長,默認 100毫秒
七、wait_exponential_multiplier和wait_exponential_max:以指數的形式產生兩次retrying之間的停留時間,產生的值爲2^previous_attempt_number * wait_exponential_multiplier,previous_attempt_number是前面已經retry的次數,若是產生的這個值超過了wait_exponential_max的大小,那麼以後兩個retrying之間的停留值都爲wait_exponential_max
八、retry_on_exception: 指定一個函數,若是此函數返回指定異常,則會重試,若是不是指定的異常則會退出
九、retry_on_result:指定一個函數,若是指定的函數返回True,則重試,不然拋出異常退出
使用比較簡單,用的最多的不外乎:stop_max_attempt_number,stop_max_delay 這兩個。其餘還有一些,你們能夠去參考文檔。
好了,就這麼多啦,我是迷神,更多精彩,記得關注我哦,請多多轉發,有問題也能夠評論哦。感謝做者分享-http://bjbsair.com/2020-04-07...
圖/文:迷神
從以前寫的 【Python登錄小米路由器撥號更換IP,繞過網站反爬IP限制機制】咱們就能夠看到python有一種重試機制,很好用。特別是在寫爬蟲的時候,簡直是python爬蟲必備利器。
工做中也常常碰到的問題就是,某個方法出現了異常,重試幾回。循環重複一個方法是很常見的。好比爬蟲中的獲取代理,對獲取失敗的狀況進行重試。或者是python爬蟲爬取網頁的內容的時候出現錯誤,也須要使用重試等,在爬蟲領域,這個模塊應該仍是很不錯的。
人生苦短啊
pip install retrying #安裝
retrying提供一個裝飾器函數retry,被裝飾的函數會在運行失敗的狀況下從新執行,默認一直報錯就一直重試。咱們先看下咱們以前的一段代碼:
from retrying import retry @retry(stop_max_attempt_number=50000,wait_fixed=2000) def tyc(): #代碼 if __name__ == '__main__': tyc()
這個裏面retry的裝飾器,有2個參數,stop_max_attempt_number 表明最大重試次數,wait_fixed 代碼,間隔多久進行重試。
他的其餘參數用法有,我羅列一些我開發過程經常使用的給你們,但願對你們有幫助,基本上這些都夠用了:
# 設置方法的最大延遲時間,默認爲100毫秒(是執行這個方法重試的總時間) @retry(stop_max_attempt_number=5,stop_max_delay=50)
# 添加每次方法執行之間的等待時間 @retry(stop_max_attempt_number=5,wait_fixed=2000) # 隨機的等待時間 @retry(stop_max_attempt_number=5,wait_random_min=100,wait_random_max=2000) # 每調用一次增長固定時長 @retry(stop_max_attempt_number=5,wait_incrementing_increment=1000)
其餘的還有參數:
一、 stop_max_attempt_number 在中止以前嘗試的最大次數,最後一次若是仍是有異常則會拋出異常,中止運行二、stop_max_delay 最大延遲時間
三、wait_fixed:兩次調用方法期間停留時長,默認1000毫秒,1秒
四、wait_random_min:在兩次調用方法停留時長,停留最短期,默認爲0
五、wait_random_max:在兩次調用方法停留時長,停留最長時間,默認爲1000毫秒
六、wait_incrementing_increment:每調用一次則會增長的時長,默認 100毫秒
七、wait_exponential_multiplier和wait_exponential_max:以指數的形式產生兩次retrying之間的停留時間,產生的值爲2^previous_attempt_number * wait_exponential_multiplier,previous_attempt_number是前面已經retry的次數,若是產生的這個值超過了wait_exponential_max的大小,那麼以後兩個retrying之間的停留值都爲wait_exponential_max
八、retry_on_exception: 指定一個函數,若是此函數返回指定異常,則會重試,若是不是指定的異常則會退出
九、retry_on_result:指定一個函數,若是指定的函數返回True,則重試,不然拋出異常退出
使用比較簡單,用的最多的不外乎:stop_max_attempt_number,stop_max_delay 這兩個。其餘還有一些,你們能夠去參考文檔。
好了,就這麼多啦,我是迷神,更多精彩,記得關注我哦,請多多轉發,有問題也能夠評論哦。感謝做者分享-http://bjbsair.com/2020-04-07...
圖/文:迷神
從以前寫的 【Python登錄小米路由器撥號更換IP,繞過網站反爬IP限制機制】咱們就能夠看到python有一種重試機制,很好用。特別是在寫爬蟲的時候,簡直是python爬蟲必備利器。
工做中也常常碰到的問題就是,某個方法出現了異常,重試幾回。循環重複一個方法是很常見的。好比爬蟲中的獲取代理,對獲取失敗的狀況進行重試。或者是python爬蟲爬取網頁的內容的時候出現錯誤,也須要使用重試等,在爬蟲領域,這個模塊應該仍是很不錯的。
人生苦短啊
pip install retrying #安裝
retrying提供一個裝飾器函數retry,被裝飾的函數會在運行失敗的狀況下從新執行,默認一直報錯就一直重試。咱們先看下咱們以前的一段代碼:
from retrying import retry @retry(stop_max_attempt_number=50000,wait_fixed=2000) def tyc(): #代碼 if __name__ == '__main__': tyc()
這個裏面retry的裝飾器,有2個參數,stop_max_attempt_number 表明最大重試次數,wait_fixed 代碼,間隔多久進行重試。
他的其餘參數用法有,我羅列一些我開發過程經常使用的給你們,但願對你們有幫助,基本上這些都夠用了:
# 設置方法的最大延遲時間,默認爲100毫秒(是執行這個方法重試的總時間) @retry(stop_max_attempt_number=5,stop_max_delay=50)
# 添加每次方法執行之間的等待時間 @retry(stop_max_attempt_number=5,wait_fixed=2000) # 隨機的等待時間 @retry(stop_max_attempt_number=5,wait_random_min=100,wait_random_max=2000) # 每調用一次增長固定時長 @retry(stop_max_attempt_number=5,wait_incrementing_increment=1000)
其餘的還有參數:
一、 stop_max_attempt_number 在中止以前嘗試的最大次數,最後一次若是仍是有異常則會拋出異常,中止運行二、stop_max_delay 最大延遲時間
三、wait_fixed:兩次調用方法期間停留時長,默認1000毫秒,1秒
四、wait_random_min:在兩次調用方法停留時長,停留最短期,默認爲0
五、wait_random_max:在兩次調用方法停留時長,停留最長時間,默認爲1000毫秒
六、wait_incrementing_increment:每調用一次則會增長的時長,默認 100毫秒
七、wait_exponential_multiplier和wait_exponential_max:以指數的形式產生兩次retrying之間的停留時間,產生的值爲2^previous_attempt_number * wait_exponential_multiplier,previous_attempt_number是前面已經retry的次數,若是產生的這個值超過了wait_exponential_max的大小,那麼以後兩個retrying之間的停留值都爲wait_exponential_max
八、retry_on_exception: 指定一個函數,若是此函數返回指定異常,則會重試,若是不是指定的異常則會退出
九、retry_on_result:指定一個函數,若是指定的函數返回True,則重試,不然拋出異常退出
使用比較簡單,用的最多的不外乎:stop_max_attempt_number,stop_max_delay 這兩個。其餘還有一些,你們能夠去參考文檔。
好了,就這麼多啦,我是迷神,更多精彩,記得關注我哦,請多多轉發,有問題也能夠評論哦。感謝做者分享-http://bjbsair.com/2020-04-07...
圖/文:迷神
從以前寫的 【Python登錄小米路由器撥號更換IP,繞過網站反爬IP限制機制】咱們就能夠看到python有一種重試機制,很好用。特別是在寫爬蟲的時候,簡直是python爬蟲必備利器。
工做中也常常碰到的問題就是,某個方法出現了異常,重試幾回。循環重複一個方法是很常見的。好比爬蟲中的獲取代理,對獲取失敗的狀況進行重試。或者是python爬蟲爬取網頁的內容的時候出現錯誤,也須要使用重試等,在爬蟲領域,這個模塊應該仍是很不錯的。
人生苦短啊
pip install retrying #安裝
retrying提供一個裝飾器函數retry,被裝飾的函數會在運行失敗的狀況下從新執行,默認一直報錯就一直重試。咱們先看下咱們以前的一段代碼:
from retrying import retry @retry(stop_max_attempt_number=50000,wait_fixed=2000) def tyc(): #代碼 if __name__ == '__main__': tyc()
這個裏面retry的裝飾器,有2個參數,stop_max_attempt_number 表明最大重試次數,wait_fixed 代碼,間隔多久進行重試。
他的其餘參數用法有,我羅列一些我開發過程經常使用的給你們,但願對你們有幫助,基本上這些都夠用了:
# 設置方法的最大延遲時間,默認爲100毫秒(是執行這個方法重試的總時間) @retry(stop_max_attempt_number=5,stop_max_delay=50)
# 添加每次方法執行之間的等待時間 @retry(stop_max_attempt_number=5,wait_fixed=2000) # 隨機的等待時間 @retry(stop_max_attempt_number=5,wait_random_min=100,wait_random_max=2000) # 每調用一次增長固定時長 @retry(stop_max_attempt_number=5,wait_incrementing_increment=1000)
其餘的還有參數:
一、 stop_max_attempt_number 在中止以前嘗試的最大次數,最後一次若是仍是有異常則會拋出異常,中止運行二、stop_max_delay 最大延遲時間
三、wait_fixed:兩次調用方法期間停留時長,默認1000毫秒,1秒
四、wait_random_min:在兩次調用方法停留時長,停留最短期,默認爲0
五、wait_random_max:在兩次調用方法停留時長,停留最長時間,默認爲1000毫秒
六、wait_incrementing_increment:每調用一次則會增長的時長,默認 100毫秒
七、wait_exponential_multiplier和wait_exponential_max:以指數的形式產生兩次retrying之間的停留時間,產生的值爲2^previous_attempt_number * wait_exponential_multiplier,previous_attempt_number是前面已經retry的次數,若是產生的這個值超過了wait_exponential_max的大小,那麼以後兩個retrying之間的停留值都爲wait_exponential_max
八、retry_on_exception: 指定一個函數,若是此函數返回指定異常,則會重試,若是不是指定的異常則會退出
九、retry_on_result:指定一個函數,若是指定的函數返回True,則重試,不然拋出異常退出
使用比較簡單,用的最多的不外乎:stop_max_attempt_number,stop_max_delay 這兩個。其餘還有一些,你們能夠去參考文檔。
好了,就這麼多啦,我是迷神,更多精彩,記得關注我哦,請多多轉發,有問題也能夠評論哦。感謝做者分享-http://bjbsair.com/2020-04-07...
圖/文:迷神
從以前寫的 【Python登錄小米路由器撥號更換IP,繞過網站反爬IP限制機制】咱們就能夠看到python有一種重試機制,很好用。特別是在寫爬蟲的時候,簡直是python爬蟲必備利器。
工做中也常常碰到的問題就是,某個方法出現了異常,重試幾回。循環重複一個方法是很常見的。好比爬蟲中的獲取代理,對獲取失敗的狀況進行重試。或者是python爬蟲爬取網頁的內容的時候出現錯誤,也須要使用重試等,在爬蟲領域,這個模塊應該仍是很不錯的。
人生苦短啊
pip install retrying #安裝
retrying提供一個裝飾器函數retry,被裝飾的函數會在運行失敗的狀況下從新執行,默認一直報錯就一直重試。咱們先看下咱們以前的一段代碼:
from retrying import retry @retry(stop_max_attempt_number=50000,wait_fixed=2000) def tyc(): #代碼 if __name__ == '__main__': tyc()
這個裏面retry的裝飾器,有2個參數,stop_max_attempt_number 表明最大重試次數,wait_fixed 代碼,間隔多久進行重試。
他的其餘參數用法有,我羅列一些我開發過程經常使用的給你們,但願對你們有幫助,基本上這些都夠用了:
# 設置方法的最大延遲時間,默認爲100毫秒(是執行這個方法重試的總時間) @retry(stop_max_attempt_number=5,stop_max_delay=50)
# 添加每次方法執行之間的等待時間 @retry(stop_max_attempt_number=5,wait_fixed=2000) # 隨機的等待時間 @retry(stop_max_attempt_number=5,wait_random_min=100,wait_random_max=2000) # 每調用一次增長固定時長 @retry(stop_max_attempt_number=5,wait_incrementing_increment=1000)
其餘的還有參數:
一、 stop_max_attempt_number 在中止以前嘗試的最大次數,最後一次若是仍是有異常則會拋出異常,中止運行二、stop_max_delay 最大延遲時間
三、wait_fixed:兩次調用方法期間停留時長,默認1000毫秒,1秒
四、wait_random_min:在兩次調用方法停留時長,停留最短期,默認爲0
五、wait_random_max:在兩次調用方法停留時長,停留最長時間,默認爲1000毫秒
六、wait_incrementing_increment:每調用一次則會增長的時長,默認 100毫秒
七、wait_exponential_multiplier和wait_exponential_max:以指數的形式產生兩次retrying之間的停留時間,產生的值爲2^previous_attempt_number * wait_exponential_multiplier,previous_attempt_number是前面已經retry的次數,若是產生的這個值超過了wait_exponential_max的大小,那麼以後兩個retrying之間的停留值都爲wait_exponential_max
八、retry_on_exception: 指定一個函數,若是此函數返回指定異常,則會重試,若是不是指定的異常則會退出
九、retry_on_result:指定一個函數,若是指定的函數返回True,則重試,不然拋出異常退出
使用比較簡單,用的最多的不外乎:stop_max_attempt_number,stop_max_delay 這兩個。其餘還有一些,你們能夠去參考文檔。
好了,就這麼多啦,我是迷神,更多精彩,記得關注我哦,請多多轉發,有問題也能夠評論哦。感謝做者分享-http://bjbsair.com/2020-04-07...
圖/文:迷神
從以前寫的 【Python登錄小米路由器撥號更換IP,繞過網站反爬IP限制機制】咱們就能夠看到python有一種重試機制,很好用。特別是在寫爬蟲的時候,簡直是python爬蟲必備利器。
工做中也常常碰到的問題就是,某個方法出現了異常,重試幾回。循環重複一個方法是很常見的。好比爬蟲中的獲取代理,對獲取失敗的狀況進行重試。或者是python爬蟲爬取網頁的內容的時候出現錯誤,也須要使用重試等,在爬蟲領域,這個模塊應該仍是很不錯的。
人生苦短啊
pip install retrying #安裝
retrying提供一個裝飾器函數retry,被裝飾的函數會在運行失敗的狀況下從新執行,默認一直報錯就一直重試。咱們先看下咱們以前的一段代碼:
from retrying import retry @retry(stop_max_attempt_number=50000,wait_fixed=2000) def tyc(): #代碼 if __name__ == '__main__': tyc()
這個裏面retry的裝飾器,有2個參數,stop_max_attempt_number 表明最大重試次數,wait_fixed 代碼,間隔多久進行重試。
他的其餘參數用法有,我羅列一些我開發過程經常使用的給你們,但願對你們有幫助,基本上這些都夠用了:
# 設置方法的最大延遲時間,默認爲100毫秒(是執行這個方法重試的總時間) @retry(stop_max_attempt_number=5,stop_max_delay=50)
# 添加每次方法執行之間的等待時間 @retry(stop_max_attempt_number=5,wait_fixed=2000) # 隨機的等待時間 @retry(stop_max_attempt_number=5,wait_random_min=100,wait_random_max=2000) # 每調用一次增長固定時長 @retry(stop_max_attempt_number=5,wait_incrementing_increment=1000)
其餘的還有參數:
一、 stop_max_attempt_number 在中止以前嘗試的最大次數,最後一次若是仍是有異常則會拋出異常,中止運行二、stop_max_delay 最大延遲時間
三、wait_fixed:兩次調用方法期間停留時長,默認1000毫秒,1秒
四、wait_random_min:在兩次調用方法停留時長,停留最短期,默認爲0
五、wait_random_max:在兩次調用方法停留時長,停留最長時間,默認爲1000毫秒
六、wait_incrementing_increment:每調用一次則會增長的時長,默認 100毫秒
七、wait_exponential_multiplier和wait_exponential_max:以指數的形式產生兩次retrying之間的停留時間,產生的值爲2^previous_attempt_number * wait_exponential_multiplier,previous_attempt_number是前面已經retry的次數,若是產生的這個值超過了wait_exponential_max的大小,那麼以後兩個retrying之間的停留值都爲wait_exponential_max
八、retry_on_exception: 指定一個函數,若是此函數返回指定異常,則會重試,若是不是指定的異常則會退出
九、retry_on_result:指定一個函數,若是指定的函數返回True,則重試,不然拋出異常退出
使用比較簡單,用的最多的不外乎:stop_max_attempt_number,stop_max_delay 這兩個。其餘還有一些,你們能夠去參考文檔。
好了,就這麼多啦,我是迷神,更多精彩,記得關注我哦,請多多轉發,有問題也能夠評論哦。感謝做者分享-http://bjbsair.com/2020-04-07...
圖/文:迷神
從以前寫的 【Python登錄小米路由器撥號更換IP,繞過網站反爬IP限制機制】咱們就能夠看到python有一種重試機制,很好用。特別是在寫爬蟲的時候,簡直是python爬蟲必備利器。
工做中也常常碰到的問題就是,某個方法出現了異常,重試幾回。循環重複一個方法是很常見的。好比爬蟲中的獲取代理,對獲取失敗的狀況進行重試。或者是python爬蟲爬取網頁的內容的時候出現錯誤,也須要使用重試等,在爬蟲領域,這個模塊應該仍是很不錯的。
人生苦短啊
pip install retrying #安裝
retrying提供一個裝飾器函數retry,被裝飾的函數會在運行失敗的狀況下從新執行,默認一直報錯就一直重試。咱們先看下咱們以前的一段代碼:
from retrying import retry @retry(stop_max_attempt_number=50000,wait_fixed=2000) def tyc(): #代碼 if __name__ == '__main__': tyc()
這個裏面retry的裝飾器,有2個參數,stop_max_attempt_number 表明最大重試次數,wait_fixed 代碼,間隔多久進行重試。
他的其餘參數用法有,我羅列一些我開發過程經常使用的給你們,但願對你們有幫助,基本上這些都夠用了:
# 設置方法的最大延遲時間,默認爲100毫秒(是執行這個方法重試的總時間) @retry(stop_max_attempt_number=5,stop_max_delay=50)
# 添加每次方法執行之間的等待時間 @retry(stop_max_attempt_number=5,wait_fixed=2000) # 隨機的等待時間 @retry(stop_max_attempt_number=5,wait_random_min=100,wait_random_max=2000) # 每調用一次增長固定時長 @retry(stop_max_attempt_number=5,wait_incrementing_increment=1000)
其餘的還有參數:
一、 stop_max_attempt_number 在中止以前嘗試的最大次數,最後一次若是仍是有異常則會拋出異常,中止運行二、stop_max_delay 最大延遲時間
三、wait_fixed:兩次調用方法期間停留時長,默認1000毫秒,1秒
四、wait_random_min:在兩次調用方法停留時長,停留最短期,默認爲0
五、wait_random_max:在兩次調用方法停留時長,停留最長時間,默認爲1000毫秒
六、wait_incrementing_increment:每調用一次則會增長的時長,默認 100毫秒
七、wait_exponential_multiplier和wait_exponential_max:以指數的形式產生兩次retrying之間的停留時間,產生的值爲2^previous_attempt_number * wait_exponential_multiplier,previous_attempt_number是前面已經retry的次數,若是產生的這個值超過了wait_exponential_max的大小,那麼以後兩個retrying之間的停留值都爲wait_exponential_max
八、retry_on_exception: 指定一個函數,若是此函數返回指定異常,則會重試,若是不是指定的異常則會退出
九、retry_on_result:指定一個函數,若是指定的函數返回True,則重試,不然拋出異常退出
使用比較簡單,用的最多的不外乎:stop_max_attempt_number,stop_max_delay 這兩個。其餘還有一些,你們能夠去參考文檔。
好了,就這麼多啦,我是迷神,更多精彩,記得關注我哦,請多多轉發,有問題也能夠評論哦。感謝做者分享-http://bjbsair.com/2020-04-07...
圖/文:迷神
從以前寫的 【Python登錄小米路由器撥號更換IP,繞過網站反爬IP限制機制】咱們就能夠看到python有一種重試機制,很好用。特別是在寫爬蟲的時候,簡直是python爬蟲必備利器。
工做中也常常碰到的問題就是,某個方法出現了異常,重試幾回。循環重複一個方法是很常見的。好比爬蟲中的獲取代理,對獲取失敗的狀況進行重試。或者是python爬蟲爬取網頁的內容的時候出現錯誤,也須要使用重試等,在爬蟲領域,這個模塊應該仍是很不錯的。
人生苦短啊
pip install retrying #安裝
retrying提供一個裝飾器函數retry,被裝飾的函數會在運行失敗的狀況下從新執行,默認一直報錯就一直重試。咱們先看下咱們以前的一段代碼:
from retrying import retry @retry(stop_max_attempt_number=50000,wait_fixed=2000) def tyc(): #代碼 if __name__ == '__main__': tyc()
這個裏面retry的裝飾器,有2個參數,stop_max_attempt_number 表明最大重試次數,wait_fixed 代碼,間隔多久進行重試。
他的其餘參數用法有,我羅列一些我開發過程經常使用的給你們,但願對你們有幫助,基本上這些都夠用了:
# 設置方法的最大延遲時間,默認爲100毫秒(是執行這個方法重試的總時間) @retry(stop_max_attempt_number=5,stop_max_delay=50)
# 添加每次方法執行之間的等待時間 @retry(stop_max_attempt_number=5,wait_fixed=2000) # 隨機的等待時間 @retry(stop_max_attempt_number=5,wait_random_min=100,wait_random_max=2000) # 每調用一次增長固定時長 @retry(stop_max_attempt_number=5,wait_incrementing_increment=1000)
其餘的還有參數:
一、 stop_max_attempt_number 在中止以前嘗試的最大次數,最後一次若是仍是有異常則會拋出異常,中止運行二、stop_max_delay 最大延遲時間
三、wait_fixed:兩次調用方法期間停留時長,默認1000毫秒,1秒
四、wait_random_min:在兩次調用方法停留時長,停留最短期,默認爲0
五、wait_random_max:在兩次調用方法停留時長,停留最長時間,默認爲1000毫秒
六、wait_incrementing_increment:每調用一次則會增長的時長,默認 100毫秒
七、wait_exponential_multiplier和wait_exponential_max:以指數的形式產生兩次retrying之間的停留時間,產生的值爲2^previous_attempt_number * wait_exponential_multiplier,previous_attempt_number是前面已經retry的次數,若是產生的這個值超過了wait_exponential_max的大小,那麼以後兩個retrying之間的停留值都爲wait_exponential_max
八、retry_on_exception: 指定一個函數,若是此函數返回指定異常,則會重試,若是不是指定的異常則會退出
九、retry_on_result:指定一個函數,若是指定的函數返回True,則重試,不然拋出異常退出
使用比較簡單,用的最多的不外乎:stop_max_attempt_number,stop_max_delay 這兩個。其餘還有一些,你們能夠去參考文檔。
好了,就這麼多啦,我是迷神,更多精彩,記得關注我哦,請多多轉發,有問題也能夠評論哦。