91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

django使用celery異步發送短信

發布時間:2020-04-02 17:24:20 來源:網絡 閱讀:350 作者:劉小潭 欄目:編程語言
1. 安裝celery模塊
pip install -U celery==4.3.0
2. 創建celery相關目錄
xiaolan/  # 項目主目錄
├── mycelery/
    ├── config.py     # 配置文件
    ├── __init__.py   
    ├── main.py       # 主程序
    └── sms/          # 一個目錄可以放置多個任務,該目錄下存放當前任務執行時需要的模塊或依賴
        └── tasks.py  # 任務的文件,名稱必須是這個
3. 創建celery配置文件config.py
# 注意: 我的redis因為沒有設置密碼所有可以這樣用
# 任務隊列的鏈接地址
broker_url = 'redis://127.0.0.1:6379/15'
# 結果隊列的鏈接地址
result_backend = 'redis://127.0.0.1:6379/14'
4. 在man.py主程序中對django的配置文件進行加載, 把django和celery進行組合
import os
import django
from celery import Celery

# 主程序
# 創建celery實例對象
app = Celery("xiaolan")

# 把celery和django進行結合, 識別和加載django的配置文件
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'xiaolan.settings.dev')

# 對django框架進行初始化
django.setup()

# 通過app對象加載配置
app.config_from_object("mycelery.config")

# 加載任務
# 參數必須是一個列表, 里面的每一個都是任務的路徑名稱
# 列: app.autodiscover_tasks(["任務1", "任務2"])
app.autodiscover_tasks(["mycelery.sms"])

# 啟動Celery的命令
# 強烈建議切換目錄到mycelery目錄下啟動
# celery -A main worker --loglevel=info
5. 配置tasks.py, 把注冊短信發送功能, 整合成一個任務函數,代碼:
from mycelery.main import app
from .yuntongxun.sms import CCP
from xiaolan.settings import constants
import logging
from django.conf import settings
log = logging.getLogger("django")

@app.task(name="send_sms")
def send_sms(mobile, sms_code):
    """異步發送短信"""
    ccp = CCP()
    try:
        result = ccp.send_template_sms(mobile, [sms_code, constants.SMS_CODE_EXPIRE//60 ], settings.SMS.get("_templateID"))
        return result
    except:
        log.error("發送短信驗證碼失敗!手機號:%s" % mobile)
6. 把django中的短信發送模塊和相關常量配置文件直接移動到當前sms任務目錄中
mycelery/
├── config.py
├── __init__.py
├── main.py
└── sms/
    ├── __init__.py
    ├── tasks.py
    └── yuntongxun
        ├── CCPRestSDK.py
        ├── __init__.py
        ├── sms.py
        └── xmltojson.py
7. 在django里面, 我們調用celery來異步執行任務, 需要完成2個步驟:
# 1. 聲明一個和celery一模一樣的任務函數,但是我們可以導包來解決
from mycelery.sms.tasks import send_sms

# 2. 調用任務函數,發布任務
send_sms.delay(mobile,sms_code)
# send_sms.delay() 如果調用的任務函數沒有參數,則不需要填寫任何內容
8. 啟動項目
celery -A mycelery.main worker --loglevel=info
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高州市| 六枝特区| 巫溪县| 天气| 禄劝| 柳州市| 旌德县| 文水县| 二手房| 铜陵市| 黔东| 苏尼特右旗| 松桃| 磴口县| 台前县| 阿瓦提县| 东阳市| 得荣县| 航空| 白城市| 乐亭县| 延庆县| 奎屯市| 石家庄市| 台东县| 陵川县| 民和| 甘泉县| 炉霍县| 美姑县| 古丈县| 彰武县| 宕昌县| 雷山县| 灌云县| 抚顺市| 惠来县| 安平县| 咸丰县| 崇文区| 将乐县|