二十六 .定時器(驗證碼)和短信(驗證碼)

一 .定時器(驗證碼)和短信(驗證碼)

1. hreading中定時器驗證碼(Timer方法)

threading中定時器Timer
定時器功能:在設置的多少時間後執行任務,不影響當前任務的執行

 

經常使用方法
from threading import Timer
t = Timer(interval, function, args=None, kwargs=None)
# interval 設置的時間(s) 
# function 要執行的任務
# args,kwargs 傳入的參數

t.start()  # 開啓定時器
t.cancel()  # 取消定時器
 

簡單示例
import time
from threading import Timer

def task(name):
    print('%s starts time: %s'%(name, time.ctime()))

t = Timer(3,task,args=('nick',))
t.start()
print('end time:',time.ctime())  # 開啓定時器後不影響主線程執行,因此先打印

-------------------------------------------------------------------------------
end time: Wed Aug  7 21:14:51 2019
nick starts time: Wed Aug  7 21:14:54 2019
 

驗證碼示例:60s後驗證碼失效
import random
from threading import Timer

# 定義Code類
class Code:
    # 初始化時調用緩存
    def __init__(self):
        self.make_cache()

    def make_cache(self, interval=60):
        # 先生成一個驗證碼
        self.cache = self.make_code()
        print(self.cache)
        # 開啓定時器,60s後從新生成驗證碼
        self.t = Timer(interval, self.make_cache)
        self.t.start()
    
    # 隨機生成4位數驗證碼
    def make_code(self, n=4):
        res = ''
        for i in range(n):
            s1 = str(random.randint(0, 9))
            s2 = chr(random.randint(65, 90))
            res += random.choice([s1, s2])
        return res
    
    # 驗證驗證碼
    def check(self):
        while True:
            code = input('請輸入驗證碼(不區分大小寫):').strip()
            if code.upper() == self.cache:
                print('驗證碼輸入正確')
                # 正確輸入驗證碼後,取消定時器任務
                self.t.cancel()
                break

obj = Code()
obj.check()

 2. 短信(驗證碼)

   https://www.cnblogs.com/863652104kai/p/11541077.html#FeedBackhtml

    http://www.javashuo.com/article/p-hbzwqnzu-da.htmlpython

相關文章
相關標籤/搜索