在編程的時候,我們難免會遇到一些不可靠的情況,比如網(wǎng)絡(luò)請求失敗,數(shù)據(jù)庫連接超時等等。這些不確定性會讓我們的程序容易出現(xiàn)各種錯誤和異常。那么如何來增加程序的容錯性和健壯性呢?
可能大多數(shù)人會想到使用try except來進(jìn)行異常捕捉進(jìn)行失敗重試(Retry)。雖然try-escept一個非常常見和有效的方式來增強程序穩(wěn)定性,但是可能一不小心就會造成棧溢出。
所以接下來我就來介紹一個另外的一個專門用于失敗重試的庫:retrying
。
定義
在Python生態(tài)中,retrying庫提供了非常便捷的裝飾器和函數(shù)來幫助我們輕松添加失敗重試機制。它可以自定義重試策略、停止條件、等待間隔等,對各種異常進(jìn)行捕捉處理。使用retrying可以大大減少我們重復(fù)編寫失敗重試輪詢的代碼量。
下載retrying
pip install retrying
無參數(shù)重試
我們可以直接在函數(shù)上使用裝飾器@retry
來進(jìn)行失敗重試
import retrying
@retry
def func():
for item in range(0,100):
result=item / 0
print(result)
return result
func()
但是這種方式并不建議使用,就像上面的代碼,我們都知道0作為除數(shù)就會報錯,在上面的func函數(shù)中,因為加了@retry
裝飾器進(jìn)行失敗重試,這樣就就會進(jìn)入一個死循環(huán)一直失敗一直重試。
所以我們在進(jìn)行失敗重試的時候最好是需要加上一些參數(shù)來限制失敗重試。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
相關(guān)推薦
。;concurrent-futures一concurrent-futures模塊為調(diào)用異步執(zhí)行提供了一個高層次的接口。異步網(wǎng)絡(luò)編程庫asyncio- (在Python 3.4 +版本以上的P
發(fā)表于 09-06 15:58
軟件包的依賴關(guān)系,而不考慮版本棄用或最新的向后不兼容版本。當(dāng)然,這可以通過在requirements.txt中定義版本來完成,但是要確保我們得到的每個軟件包都像我們期望的那樣,最好使用自定義存儲庫
發(fā)表于 09-14 15:59
成為了我們了解人工智能的首選編程軟件。二、關(guān)于教程本教程以純軟件的編程為主,并不涉及任何的硬件部分。程序編寫部分以Mind+軟件中的“Python 模式”為開發(fā)工具(自帶基于Python
發(fā)表于 06-23 10:10
ADM1266 Python庫
發(fā)表于 03-23 15:47
?1次下載
pandas、numpy是Python數(shù)據(jù)科學(xué)中非常常用的庫,numpy是Python的數(shù)值計算擴展,專門用來處理矩陣,它的運算效率比列表更高效。
發(fā)表于 05-25 12:49
?2621次閱讀
PIL:Python Imaging Library,是Python環(huán)境下最受歡迎的圖像處理庫,木有之一。然而,在Python2.7之后不再
發(fā)表于 02-08 17:18
?1367次閱讀
PIL:Python Imaging Library,是Python環(huán)境下最受歡迎的圖像處理庫,木有之一。然而,在Python2.7之后不再
發(fā)表于 02-08 17:18
?1109次閱讀
Python作為一種流行的編程語言,擁有豐富的第三方庫資源,這些庫可以幫助開發(fā)者輕松實現(xiàn)各種功能,從數(shù)據(jù)分析到Web開發(fā),從機器學(xué)習(xí)到圖像處理,涵蓋了各個領(lǐng)域。在
發(fā)表于 04-14 12:11
?1189次閱讀
telnetlib 是 Python 標(biāo)準(zhǔn)庫中的一個模塊,它提供了 Telnet 協(xié)議的客戶端功能。使用 telnetlib 模塊,我們可以在 Py
發(fā)表于 05-04 14:27
?8209次閱讀
解析器下安裝外部庫。步驟一在TSMaster工具->系統(tǒng)信息->python環(huán)境設(shè)置中選擇打開解析器路徑;步驟二在該文件路徑中輸入cmd,打
發(fā)表于 08-14 10:06
?1211次閱讀
開發(fā)、游戲開發(fā)、機器學(xué)習(xí)、自然語言處理等領(lǐng)域。 在本文中,我們將介紹如何使用Python創(chuàng)建數(shù)據(jù)庫。首先,讓我們了解一下什么是數(shù)據(jù)庫。 什么是數(shù)據(jù)庫
發(fā)表于 08-28 16:41
?1209次閱讀
,獲取數(shù)據(jù)庫中的數(shù)據(jù),并對數(shù)據(jù)進(jìn)行增刪改查等操作。本文將詳細(xì)介紹Python如何連接數(shù)據(jù)庫、讀取數(shù)據(jù)庫數(shù)據(jù)以及如何進(jìn)行查詢操作。 一、
發(fā)表于 08-28 17:09
?1867次閱讀
coloredlogs介紹 coloredlogs是一個Python庫,它允許開發(fā)人員在控制臺打印彩色日志。這個庫的主要優(yōu)點是它可以很容易地改變?nèi)罩鞠⒌念伾瑥亩谷罩靖子陂喿x和理
發(fā)表于 10-07 11:28
?857次閱讀
有參數(shù)重試 (1) stop_max_attempt_number 在retry中傳入stop_max_attempt_number參數(shù)后可以指定失敗重試的次數(shù) @retry
發(fā)表于 11-14 11:08
?841次閱讀
在Python中,要使用math庫,首先需要先引入它。math庫是Python的一個標(biāo)準(zhǔn)
發(fā)表于 11-22 11:03
?4370次閱讀
評論