Python 中寫一個裝飾器實現限制頻率訪問


1.思路:

首先要在裝飾器中確定訪問的方法名,
第一次可以訪問成功,之后要在規定的時間(變量)之后才可以訪問.
初始應該有一個變量為0;訪問成功之后把當前的時間賦值給這個變零.
這樣再次訪問時把當前的時間與變量比較差值即可.

2.代碼:

import time
def desc_time(s):
    def wapper(func):
        name = func.__name__  #給變量name賦值 確定訪問的函數
        func_identify = {name: 0,'second': s}
        def inner(*args,**kwargs):
            use_time = func_identify[name]+func_identify['second'] # 需等待這些時間之后才可以再次訪問

            now_time = time.time()
            re_time =use_time - now_time # 這個結果是一個負數
            if now_time > use_time:  # 如果當前時間大於等待的時間
                res = func(*args,**kwargs)
                func_identify[name]= now_time   # 給 func_identify[name] 重新賦值
            else:
                print("請在{}之后訪問".format(re_time))
                res = " "
            return res
        return inner
    return wapper

@desc_time(10)     #在這兒參數為設置調用間隔時間
def foo1(*args, **kwargs):
    print('執行foo1--執行成功!')
    return 'result'

#測試代碼
for i in range(50):
    time.sleep(1)
    print(foo1())

  

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM