使用容联云Celery异步发送短信验证码

celery,分布式异步任务队列
eventlet,并发网络库 gevent 协程库
ronglian_sms_sdk 容联云封装的方法

pip install celery==4.4.7

pip install eventlet==0.26.1

pip install ronglian-sms-sdk

celery启动命令

celery -A 项目名 worker -l info -P eventlet

1.配置Celery

在项目同名文件夹下创建celery.py 文件


from celery import Celery
import os
from django.conf import settings

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'p6_421.settings')

app = Celery('myworker')

app.conf.broker_url = 'redis://:@127.0.0.1:6379/5'
app.conf.result_backend = 'redis://:@127.0.0.1:6379/6'

app.autodiscover_tasks(settings.INSTALLED_APPS)

2.创建任务文件

App users文件夹下创建tasks.py 文件 Task任务
文件内存放要异步处理的任务

1. 配置容联云 settings.py

accId = ‘容联云通讯分配的主账号ID’
accToken = ‘容联云通讯分配的主账号TOKEN’
appId = ‘容联云通讯分配的应用ID’

settings.py文件配置

ACCID = '8a216da8804ba8a50180x64a39933069b'
ACCTOKEN = '09880a5e3fc94x046b3cc147e240ad169'
APPID = '8a216dax8804ba8a5018064a39a3706a2'

2. 使用SmsSDK发送短信

在App users文件夹下的tasks.py 文件里编写

tasks.py文件

from ronglian_sms_sdk import SmsSDK
from p6_421 import settings
from p6_421.celery import app

@app.task
def send_message(sms_code, mobile, expire=5):

    sdk = SmsSDK(settings.ACCID, settings.ACCTOKEN, settings.APPID)

    tid = '1'
    mobile = "%s" % mobile
    datas = ("%s" % sms_code, "%s" % expire)

    res = sdk.sendMessage(tid=tid, mobile=mobile, datas=datas)
    return res

1.发送短信验证码


class SmsView(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()
        redis_cli.set(uuid_, sms_code, ex=300)

        res = send_message.delay(sms_code, mobile)

        return Response({'code': 200, 'msg': '短信已发送,注意查收!'})

2.验证短信验证码(根据前端要求)


class CheckSmsView(APIView):
    def post(self, request):
        sms_code = request.data.get('sms_code')
        uuid_ = request.data.get('code_id')

        redis_cli = redis.Redis()
        stored_sms_code = redis_cli.get(uuid_)

        if stored_sms_code and stored_sms_code.decode() == sms_code:
            return Response({'code': 200, 'msg': '对比成功'})
        else:
            return Response({'code': 400, 'error': '对比失败'})

3.先启动django项目 然后另开终端启动celery 服务

celery -A (celery配置文件路径) worker -l info -P eventlet
例:
celery -A learnproject.utils.celery.celery_main worker -l info
-P eventlet
learnproject.utils.celery.celery_main
learnproject 项目的同名文件夹
utils 同名文件夹下的文件夹
celery 同名文件夹下的文件夹
celery_main 配置celery主要信息的py文件

Original: https://blog.csdn.net/weixin_69282446/article/details/124455292
Author: :D…
Title: 使用容联云Celery异步发送短信验证码

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/734945/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【lwip】08-ARP协议一图笔记及源码实现

    前言 8.1 IP地址与MAC地址 8.2 ARP协议简介 8.3 ARP协议报文 8.4 ARP缓存表 8.4.1 ARP缓存表简介 8.4.2 LWIP中的缓存表 8.4.3 …

    Python 2023年10月16日
    030
  • 后台开发经验总结

    1、数据库的时间记录方式,最好采用时间戳的方式,方便对数据采取时间先后和日期限制的设置。 2、所有参数能让前端传递的,尽量不要从数据库中读取,尽量减少不必要的数据库查询读写操作。 …

    Python 2023年6月9日
    054
  • Django配置与添加app

    uniapp 数据展示 Python + 数据库 = 管理系统 Django 框架 : WEB 开发框架 ,后台管理 pip : 包管理器,下载安装第三方组件使用的。 Python…

    Python 2023年8月9日
    065
  • 如何使用分治算法的思想,分治技巧详解

    分治算法 分治算法的思想 分治算法和递归的区别 使用分治算法需要满足的条件 经典题目 1、二分搜索 2、第一个错误的版本 3、快速排序 4、归并排序 5、数组中的逆序对 6、汉诺塔…

    Python 2023年10月15日
    029
  • python实现井字棋

    参考学习:Python实现井字棋游戏 闲扯 井字棋(Tic-Tac-Toe),初高中进行打发时间的一种画x画o的游戏,3*3的格子组成,一方把行列斜行连成相同的就算获胜。 那么怎么…

    Python 2023年8月1日
    092
  • TypeScript 4.9 发布!

    TypeScript 是一种通过添加类型和类型检查构建在 JavaScript 之上的语言。类型可以描述诸如对象的形状、如何调用函数以及属性是否可以为 null 或 undefin…

    Python 2023年9月26日
    053
  • scrapy框架选择器

    scrapy框架选择器 Scrapy有自己的数据提取机制。它们被称为选择器,因为它们”选择”HTML文档的某些部分 XPath 或 CSS 表达。 XPat…

    Python 2023年10月1日
    046
  • Pygame zero最全集合(持续更新)

    这是Pygame zero 最全集合 点个关注吧,关注必互关注 显示屏幕 导入图片 填充屏幕 update Windows系统:按下win+r,输入pip install pyze…

    Python 2023年9月17日
    050
  • Python之Numpy(三)

    Python之Numpy(三) 文章目录 * – Python之Numpy(三) – + 一、数组的统计运算 + * 1. 求总和 * 2. 平均值 * 3…

    Python 2023年8月28日
    070
  • 运行Scrapy程序时出现No module named win32api问题的解决思路和方法

    在使用Scrapy的时候,发现创建项目一切顺利,但是在执行Scrapy爬虫程序的时候却出现下列报错:”No module named win32api”,如…

    Python 2023年10月1日
    0103
  • 如何在 Inno Setup 中关联多种文件格式

    问题描述 Inno Setup 是一款十分强大的 Windows 安装程序制作软件,可以通过编写并编译 iss 脚本来创建安装包。之前都是直接将 Pyinstaller 生成的文件…

    Python 2023年10月15日
    073
  • 获取qq昵称接口_使用Python获取QQ昵称以及头像链接并写成API接口

    Hi! Long time no see,guys! 公众号已经由原来的计算机天堂改名为码农小猪,今后公众号内会写一些我自己的编程经验,与大家共同学习,共同进步! 最近在写一个自己…

    Python 2023年8月15日
    0723
  • 不用USB,通过adb无线调试安卓手机页面

    以前真机调试手机页面,都是使用数据线连接手机和电脑,近日身边没有USB数据线,折腾了下如何不依赖数据线只用无线调试手机页面,教程如下。 本教程适用于安卓11以及以上版本。否则应该使…

    Python 2023年10月13日
    060
  • 【python】django数据库操作

    第三方库准备: pip install mysqlclient ORM ORM可以做两件事: 创建、修改、删除数据库中的表【无法创建数据库】 操作表中数据 1 创建数据库 2 Dj…

    Python 2023年8月6日
    066
  • Python爬取各大外包网站需求

    文章目录 前言 一、需求 二、分析 三、处理 四、总结 前言 为了更好的掌握数据处理的能力,因而开启Python网络爬虫系列小项目文章。 小项目小需求驱动 总结各种方式 页面源代码…

    Python 2023年7月31日
    065
  • 【强化学习】Q-Learning算法详解以及Python实现【80行代码】

    强化学习 在文章正式开始前,请不要被强化学习的tag给吓到了,这也是我之前所遇到的一个困扰。觉得这个东西看上去很高级,需要一个完整的时间段,做详细的学习。相反,强化学习的很多算法是…

    Python 2023年10月27日
    054
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球