Celery异步发送短信验证码的实现

本文介绍了如何使用Celery进行任务调度,包括创建celery对象、配置Redis作为消息队列和结果存储,以及在tasks.py中定义发送短信验证码的任务。通过视图实现验证码发送,并详细讲解了Celery的基础概念和组件应用。
摘要由CSDN通过智能技术生成

1.创建目录

2.在__init__.py文件中创建celery对象

from celery import Celery

# 创建celery对象
celery_app = Celery('worker') # 任务执行的结果存放的位置
# 读取配置文件
celery_app.config_from_object('celery_tasks.celery')

3.在celery.py文件中写redis数据库

# 任务存放的地方6号redis数据库
BROKER_URL = 'redis://:123@localhost:6379/6'
# 结果存放的地方
CELERY_RESULT_BACKEND = 'redis://:123@localhost:6379/7'

# 导入指定的任务模块
CELERY_IMPORTS = (
    'celery_tasks.tasks'
)

4.在tasks.py文件中写任务模块

from ronglian_sms_sdk import SmsSDK
import json
import celery
from celery_tasks import celery_app

# 任务的名字
@celery_app.task()
# 发送短信验证码
def send_message(phone,msg_code):
# 容联云的主账号信息
    ACCID = ""
    AUTHTOKEN = ''
    APPID = ''

    sdk = SmsSDK(ACCID, AUTHTOKEN, APPID)
    tid = '1'
    mobile = phone
    datas = ('%s' % msg_code, 5)
    res = sdk.sendMessage(tid, mobile, datas)
    res_json = json.loads(res)
    print('json数据为:', res_json)
    return res_json


# 启动celery进程
# celery -A celery_tasks.tasks worker -l info -P gevent

5.在视图中写发送验证码

from celery_tasks.tasks import send_message

# 发送验证码

class SmsCode(Resource):
    def get(self):
        parse = reqparse.RequestParser()

        parse.add_argument('phone')

        args = parse.parse_args()

        mobile = args.get('phone')
        print('手机号为', mobile)

        msg_code = '%06d' % random.randint(0, 1000000)
        print('验证码为', msg_code)
        task = send_message(mobile, msg_code)
        print('验证码发送响应', task)

        sms_key = 'sms_%s' % mobile
        redis_cli.set(sms_key, msg_code, ex=300)
        return jsonify(code=200, message='验证码发送成功,请注意查收!')

一.Celery介绍

二.Celery组件

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值