Flask 框架中如何使用容联云通信以及Celery异步发送短信验证码(很简单)

首先使用容联云需要的一下key id什么的 在我的另一篇文章

https://blog.csdn.net/kun_ers/article/details/124481090?spm=1001.2014.3001.5502

我们先来配置Celery, 可以在项目根目

录下创建一个celery文件夹

并创建文件main.py用来配置celery

# celery/main.py


# 导包celery
from celery import Celery

# 创建celery对象

app = Celery(
            'worker',   
             borker="redis://127.0.0.1:6379/5",  # 存放任务的redis地址
             backend="redis://127.0.0.1:6379/5",  # 存放任务处理结果的地址
)

# 我的redis是没有密码的   如果有密码  可以这样写  redis://:password@127.0.0.1:6379/5


# 再然后就是要去发现任务函数了
app.autodiscover_tasks(['common.tasks.send_code'])  
# 这里写你要执行的任务函数所在的文件路径  可以是多个文件,存放在列表里

下面来看任务函数   这个跟django中的使用是一样的

from ronglian_sms_sdk import SmsSDK
from common.celery_tasks.main import app
import redis, json

# 通过@app.task装饰为任务函数
@app.task
def sms_code(mobile, code, expire=5):
    # 容联云里的
    sdk = SmsSDK(
        accId="",
        accToken="",
        appId=""
    )
    tid = "1"
    mobile = "%s" % mobile
    datas = ("%s" % code, "%s" % expire)
    res = sdk.sendMessage(tid, mobile, datas)
    # 连接redis
    redis_cli = redis.Redis(host="127.0.0.1", port=6379, db=3)
    # 这里我加了一个判断发送短信的状态码  当 为000000  时是发送成功 
    # 平时练习可以不加
    if json.loads(res)['statusCode'] == "000000":
        # 发送成功 存到redis  设置过期时间
        redis_cli.set(mobile, code, ex=300)
        # 关闭redis连接
        redis_cli.close()
        # 返回True
        return True
    return False

使用这个发送短信验证码时  只需要将该任务函数导过去

在合适的位置调用 ,异步的话需要在热舞函数后面.delay()

例如:

sms_code.delay(mobile, code)

用一个对象接收发送短信的结果   判断是否发送成功就行了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

onlooker10086

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值