相關概念:
解耦: 將耗時的發短信任務邏輯從主邏輯中分離出來的動作, 讓響應不受耗時任務的影響
生產者消費者設計模式: 最常用的解耦模式
生產者 ==> 生成任務,消息
消息隊列 ==> 緩存任務,消息
消費者 ==> 執行任務,消息
實現: 讓生產者生成發短信任務,再把任務放在消息隊列里面,最后由消費者執行任務
1. celery簡介:
celery 是一個簡單、靈活且可靠、處理大量消息的分布式系統,可以在一台或者多台機器上運行
特點:單個 Celery 進程每分鍾可處理數以百萬計的任務.
通過消息進行通信,使用消息隊列(中間人或broker)在生產者和消費者之間協調
2. 使用場景:
異步任務:將耗時操作任務提交給Celery去異步執行,比如發送短信/郵件、消息推送、音視頻處理等等
定時任務:定時執行某件事情,比如每天數據統計
3. 使用實例(短信驗證碼異步):
1)安裝
2) 創建實例並配置:
a.定義celery包: 在項目外層增加一個celery_tasks包或者文件夾
b.創建celery實例:在celery_tasks中添加 main.py文件
c.加載celery配置: 在celery_tasks包中添加config.py文件
d. 在celery_tasks.main.py 中, 將剛剛的config配置給 celery
e. 定義任務:
注冊任務:在celery_tasks包下 在創建一個包名字隨意(在這里我們創建sms包)
創建好后,在里面添加一個tasks.py文件 (tasks文件名不能改)
然后再,celery_tasks.main.py報備剛剛創建的文件
實現任務:在celery_tasks.sms.tasks.py文件中添加如下代碼:
注意: 真實的開發環境有可能會把 celery_tasks 單獨拿到某一個電腦上獨立執行,可以把yuntongxun 復制一份, 放到 celery_tasks 下面, 拿走的時候, 直接調用走就可以
4. 可能需要的操作命令