python重試次數裝飾器

2022-06-28 14:54:11 字數 942 閱讀 5041

目錄前言, 最近在使用tornado框架寫restful api時遇到很多的問題. 有框架的問題, 有非同步的問題. 雖然tornado被公認為當前python語言最好的 非同步框架, 但是實際資料並沒有像django,flask框架那麼豐富, 所以遇到很多的坑, 時很多! 這一篇主要是為了介紹一下其中在踩坑中所不得不使用的一些技術.

問題: 個別api邏輯中存在很多的呼叫系統層面,或者呼叫第三方介面阻塞超時的操作, 為了確保 api在某一步是否最終呼叫成功(先不考慮api介面效能問題) 之前的做法是 遇到所有超時操作,都進行 for迴圈, 或者while迴圈, 直到某一步最終執行才會進行後續的邏輯. 但是 在測試過程中,發現

針對不同的重試, 此時想到了 用裝飾器, 直接上** 如下

#!/usr/bin/env python

# ~*~ coding: utf-8 ~*~

def retry_func(retry_times=3, sleep_time=8):

"""函式重複執行次數"""

def retry_decorator(func):

@wraps(func)

flag = 0

while flag < retry_times:

res = func(*args, **kwargs)

if not res:

flag += 1

logger.warning(" execute times".format((func.__name__), flag))

time.sleep(sleep_time)

continue

else:

return res

return retry_decorator

Shiro密碼重試次數限制

如在 1 個小時內密碼最多重試 5 次,如果嘗試次數超過 5 次就鎖定 1 小時,1 小時後可再次重試,如果還是重試失敗,可以鎖定如 1 天,以此類推,防止密碼被暴力破解。我們通過繼承 hashedcredentialsmatcher,且使用 ehcache 記錄重試次數和超時時間。public b...

python裝飾器 Python 裝飾器

簡言之,python裝飾器就是用於拓展原來函式功能的一種函式,這個函式的特殊之處在於它的返回值也是乙個函式,使用python裝飾器的好處就是在不用更改原函式的 前提下給函式增加新的功能。一般而言,我們要想拓展原來函式 最直接的辦法就是侵入 裡面修改,例如 這是我們最原始的的乙個函式,然後我們試圖記錄...

使用裝飾器實現失敗的方法重試

前幾天,遇到乙個人問我如果在自動化測試框架中,case失敗了需要重試要怎麼處理?我當時腦海中的第一反應,就是使用unittest自帶的失敗重試機制來實現。但是事後我查了一下,發現unittest並沒有這種機制,要是需要的話只能自己修改原始碼 最近在看這部分的原始碼,下次可以整理下這種方式來實現 所以...