Celery异步发送短信验证码

1.在django项目主应用下创建celery.py文件,配置以下内容:

# celery.py文件
import os
from celery import Celery
from django.conf import settings

# 为celery配置环境变量,识别和加载django的配置文件
# 因为worker是脱离django启动的,且依赖其配置
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mdpro.settings') # 主应用

# 创建celery实例
app = Celery('mdpro')

# 指定celery消息队列的配置
app.config_from_object('mdpro.config', namespace='CELERY')
#也可以app.conf.update(BROKER_URL="XXX")

# 从所有的django-app中加载任务
app.autodiscover_tasks(settings.INSTALLED_APPS) 

2.在django项目主应用mdpro下创建config.py文件,配置以下内容:

# 消息中间人broker设置
broker_url = 'redis://:@127.0.0.1:6379/15'  #不能写localhost
# 结果存储设置
result_backend = 'redis://:@127.0.0.1:6379/14'

3.在django项目其他应用下,这里是users,创建tasks.py

from django.conf import settings
from ronglian_sms_sdk import SmsSDK
from rest_framework.utils import json


# 发送短信验证码
def send_message(mobile, sms_code, expire):
    # 实例化sdk
    sdk = SmsSDK(settings.ACCID, settings.AUTHTOKEN, settings.APPID)
    # 组织数据 tid 是容联云的一个短信模板
    tid = "1"
    # 发送手机号
    mobile = "%s" % mobile
    # 短信验证码和过期时间
    datas = ("%s" % sms_code, "%s" % expire)
    # 发送短信并接受响应
    res = sdk.sendMessage(tid=tid, mobile=mobile, datas=datas)
    # 解析响应
    print("发送短信的响应:", res, type(res))
    res_dirt = json.loads(res)
    return res_dirt

4.视图中发送异步任务

# 发送短信
class SmsApiview(APIView):
    def post(self, request):
        # 获取前端数据
        mobile = request.data.get("mobile")
        uuid = request.data.get('uuid')

        # 生成短信验证码  转化成字符串形式
        sms_code = "%d" % random.randint(10000, 99999)

        # 存储短信验证码
        redis_cli = redis.Redis(password='password')
        redis_cli.set(uuid, sms_code, ex=300)

        # 请求容联云发送短信
        res = send_message(mobile, sms_code, expire=5)
        print("aaa", res)

        return Response({'msg': '信息发送成功,请注意查收', 'code': 200})

5.启动celery

在终端中输入:celery -A p6 worker -l info -P eventlet

6.启动vue项目

npm run serve

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值