django使用celery异步发送短信
admin
2023-01-20 06:22:09
0
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

相关内容

热门资讯

【第一消息】“功夫熊猫炸金花.... 网上科普关于“功夫熊猫炸金花有没有挂”话题很是火热,小编也是针对功夫熊猫炸金花作*弊开挂的方法以及开...
今日重大通报“胡乐邯郸麻将.可... 您好:胡乐邯郸麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款...
“西方联盟已经结束了”,欧洲外... 美国新版《国家安全战略》报告对欧洲大肆挞伐,双边关系生变。在华盛顿举行的圣诞派对上,气氛压抑,一些欧...
【今日要闻】“天天爱蚌埠麻将.... 【今日要闻】“天天爱蚌埠麻将.是不是有挂?”详细开挂教程您好,天天爱蚌埠麻将这个游戏其实有挂的,确实...
玩家分享攻略“新大圣牛牛.有没... 网上科普关于“新大圣牛牛有没有挂”话题很是火热,小编也是针对新大圣牛牛作*弊开挂的方法以及开挂对应的...
山东移动AI赋能交通执法,实现... 在数字化浪潮深刻重塑社会运行模式的当下,人工智能正以前所未有的深度融入公共治理领域,推动管理模式向精...
我来教教您“九九山城麻将.辅助... 您好:九九山城麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款...
今日重大发现“开心武汉花.怎么... 家人们!今天小编来为大家解答开心武汉花透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪里买...
最新引进“琼戏互娱.有挂吗?”... 最新引进“琼戏互娱.有挂吗?”原来真的有挂您好,琼戏互娱这个游戏其实有挂的,确实是有挂的,需要了解加...
【第一资讯】“,17好友麻将.... 您好:,17好友麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这...