欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Python異常函數(shù),Python異常函數(shù)處理

Python中異常重試的解決方案詳解

Python中異常重試的解決方案詳解

成都創(chuàng)新互聯(lián)成立以來不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點,以客戶需求中心、市場為導(dǎo)向”的快速反應(yīng)體系。對公司的主營項目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計、行業(yè) / 企業(yè)門戶設(shè)計推廣、行業(yè)門戶平臺運營、APP應(yīng)用開發(fā)、手機網(wǎng)站開發(fā)、微信網(wǎng)站制作、軟件開發(fā)、綿陽主機托管等實行標(biāo)準(zhǔn)化操作,讓客戶可以直觀的預(yù)知到從成都創(chuàng)新互聯(lián)可以獲得的服務(wù)效果。

大家在做數(shù)據(jù)抓取的時候,經(jīng)常遇到由于網(wǎng)絡(luò)問題導(dǎo)致的程序保存,先前只是記錄了錯誤內(nèi)容,并對錯誤內(nèi)容進行后期處理。

原先的流程:

def crawl_page(url):

pass

def log_error(url):

pass

url = ""

try:

crawl_page(url)

except:

log_error(url)

改進后的流程:

attempts = 0

success = False

while attempts 3 and not success:

try:

crawl_page(url)

success = True

except:

attempts += 1

if attempts == 3:

break

最近發(fā)現(xiàn)的新的解決方案:retrying

retrying是一個 Python的重試包,可以用來自動重試一些可能運行失敗的程序段。retrying提供一個裝飾器函數(shù)retry,被裝飾的函數(shù)就會在運行失敗的條件下重新執(zhí)行,默認只要一直報錯就會不斷重試。

import random

from retrying import retry

@retry

def do_something_unreliable():

if random.randint(0, 10) 1:

raise IOError("Broken sauce, everything is hosed!!!111one")

else:

return "Awesome sauce!"

print do_something_unreliable()

如果我們運行have_a_try函數(shù),那么直到random.randint返回5,它才會執(zhí)行結(jié)束,否則會一直重新執(zhí)行。

retry還可以接受一些參數(shù),這個從源碼中Retrying類的初始化函數(shù)可以看到可選的參數(shù):

stop_max_attempt_number:用來設(shè)定最大的嘗試次數(shù),超過該次數(shù)就停止重試

stop_max_delay:比如設(shè)置成10000,那么從被裝飾的函數(shù)開始執(zhí)行的時間點開始,到函數(shù)成功運行結(jié)束或者失敗報錯中止的時間點,只要這段時間超過10秒,函數(shù)就不會再執(zhí)行了

wait_fixed:設(shè)置在兩次retrying之間的停留時間

wait_random_min和wait_random_max:用隨機的方式產(chǎn)生兩次retrying之間的停留時間

wait_exponential_multiplier和wait_exponential_max:以指數(shù)的形式產(chǎn)生兩次retrying之間的停留時間,產(chǎn)生的值為2^previous_attempt_number * wait_exponential_multiplier,previous_attempt_number是前面已經(jīng)retry的次數(shù),如果產(chǎn)生的這個值超過了wait_exponential_max的大小,那么之后兩個retrying之間的停留值都為wait_exponential_max。這個設(shè)計迎合了exponential backoff算法,可以減輕阻塞的情況。

我們可以指定要在出現(xiàn)哪些異常的時候再去retry,這個要用retry_on_exception傳入一個函數(shù)對象:

def retry_if_io_error(exception):

return isinstance(exception, IOError)

@retry(retry_on_exception=retry_if_io_error)

def read_a_file():

with open("file", "r") as f:

return f.read()

在執(zhí)行read_a_file函數(shù)的過程中,如果報出異常,那么這個異常會以形參exception傳入retry_if_io_error函數(shù)中,如果exception是IOError那么就進行retry,如果不是就停止運行并拋出異常。

我們還可以指定要在得到哪些結(jié)果的時候去retry,這個要用retry_on_result傳入一個函數(shù)對象:

def retry_if_result_none(result):

return result is None

@retry(retry_on_result=retry_if_result_none)

def get_result():

return None

在執(zhí)行g(shù)et_result成功后,會將函數(shù)的返回值通過形參result的形式傳入retry_if_result_none函數(shù)中,如果返回值是None那么就進行retry,否則就結(jié)束并返回函數(shù)值。

Python 運行報錯NameError出現(xiàn)原因,怎么解決

python程序,報錯NameError: name XX is not defined 是沒有聲明造成的,需要在文件的前兩行進行聲明編碼,聲明方法為:

1、寫一個python文件,文件中有中文字符,且未聲明編碼。

2、當(dāng)程序文件中,存在中文字符時候,文件未聲明編碼格式就會出現(xiàn)報錯信息:? File "encode.py", line 1SyntaxError:

Non-ASCII character '\xe7' in file encode.py on line 1, but no encoding

declared; see //..python.../dev/peps/pep-0263/ for details for details。

3、根據(jù)錯誤提示,在python官網(wǎng)得到如下幫助信息。

4、所以,按照幫助文檔的提示以及例子,在Python文件中加入一個編碼聲明。

5、保存之后,再次運行,運行成功。

Python哈希函數(shù)什么情況下拋出異常

拋出異常是停止運行這個函數(shù)中的代碼。

哈希算法將一個不定長的輸入,通過散列函數(shù)變換成一個定長的輸出,即散列值。是一種信息摘要算法。對象的hash值比原對象擁有更低的內(nèi)存復(fù)雜度。

它不同于加密。哈希是將目標(biāo)文本轉(zhuǎn)換成具有相同長度的,不可逆的雜湊字符串,而加密則是將文本轉(zhuǎn)換為具有相同長度的,可逆的密文。哈希算法是不可逆的,只能由輸入產(chǎn)生輸出,不能由輸出產(chǎn)生輸入。而加密則是可逆的。即可以從輸入產(chǎn)生輸出,也可以反過來從輸出推出輸入。

python中try/except函數(shù)可以用什么函數(shù)代替

python中try...except函數(shù)可以用if..else函數(shù)代替。在while循環(huán)內(nèi)部,fast指針每次向前走兩步,這時候我們就要判斷fast的next指針是否為None,不然對fast.next再調(diào)用next指針的時候就會報異常,這個異常出現(xiàn)也反過來說明鏈表不存在環(huán),就可以returnFalse。所以可以把while代碼放到一個try…except中,一旦出現(xiàn)異常就return。這是一個比較好的思路,在以后寫代碼的時候可以考慮替換某些if…else語句減少不必要的判斷,也使得代碼變的更簡潔。

Python編程基礎(chǔ)實戰(zhàn)之Str函數(shù)和異常處理

assert 表達式 表達式為真時,不報錯,否則報錯,assert 表達式后面還可以定義返回錯誤提示

網(wǎng)站欄目:Python異常函數(shù),Python異常函數(shù)處理
當(dāng)前地址:http://chinadenli.net/article17/dsgchgj.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化App設(shè)計響應(yīng)式網(wǎng)站網(wǎng)站改版企業(yè)網(wǎng)站制作云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司