使用容联云Celery异步发送短信验证码
文章目录
- Celery/容联云 安装与命令
- 安装
- celery启动命令
- 一、Celery
- 1.配置Celery
- 2.创建任务文件
- 二、容联云
- 1. 配置容联云 settings.py
- 2. 使用SmsSDK发送短信
- 三、视图编写
- 1.发送短信验证码
- 2.验证短信验证码(根据前端要求)
- 3.先启动django项目 然后另开终端启动celery 服务
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
一、Celery
1.配置Celery
在项目同名文件夹下创建celery.py 文件
# 导入celery 导入 settings配置文件
from celery import Celery
import os
from django.conf import settings# 配置环境变量 celery的worker进程是脱离django启动, 但是依赖其配置文件
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'p6_421.settings')# 创建celery应用app Worker工人,执行任务的人 myworker
app = Celery('myworker')# 配置app
app.conf.broker_url = 'redis://:@127.0.0.1:6379/5' # 相当于数据结构中的队列, Broker把任务暂时放到队列中,等待Worker来处理。
app.conf.result_backend = 'redis://:@127.0.0.1:6379/6' # Backend 用于保存任务的执行结果# 发现任务函数 autodiscover_tasks自动发现任务
app.autodiscover_tasks(settings.INSTALLED_APPS)
# app.autodiscover_tasks(['learnproject.utils.celery.tasks'])
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): # expire=5 5分钟过期# 实例化sdksdk = SmsSDK(settings.ACCID, settings.ACCTOKEN, settings.APPID)# 组织数据tid = '1' #容联云的短信模板IDmobile = "%s" % mobiledatas = ("%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')# 2 生成短信验证码 并redis存储 方便验证sms_code = '%d' % random.randint(10000, 99999)redis_cli = redis.Redis()redis_cli.set(uuid_, sms_code, ex=300)# 3 请求容联云 发送短信 .delay 异步执行任务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 拿出存储的短信验证码stored_sms_coderedis_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文件
使用容联云Celery异步发送短信验证码相关推荐
- java通过容联云通讯实现发送短信验证码
1.在容联云通讯上根据 -接入流程 完成以下的步骤 创建应用 申请短信签名 配置测试号码等等 最终可以拿到SID和TOKEN.之后把官网上的Demo下载下来,把里面的jar包加到你的项目里面 Cont ...
- 容联云通讯php短信接口,开发中使用 【容联 云通信】获取短信验证码的 Javascript 接口...
开发中使用 [容联 云通信]获取短信验证码的 Javascript 接口 在平台应用列表添加应用. 在测试号码中绑定测试手机号码,只有这个号码能接收验证短信. 在项目中绑定配置:将控制台首页的开发者主 ...
- Dython 容联云的一个测试短信验证码
import random,redis from ronglian_sms_sdk import SmsSDK accId = '8a216da882f1f59401835463b6491132' ...
- 手机异步发送短信验证码解决方案-Celery+redis
Celery介绍和使用 一.Celery介绍: 一个简单.灵活且可靠.处理大量消息的分布式系统,可以在一台或者多台机器上运行. Celery是一个功能完备即插即用的任务队列 单个 Celery 进程每 ...
- 阿里云接口实现发送短信验证码
java 阿里云接口实现发送短信验证码 1. 阿里云后台配置短信相关 1.1 开通短信服务 1.2 添加模板签名 1.3 创建秘钥 1.4 短信需要后台授权--注意点 2 java--简单实现短信验证 ...
- laravel+容联.云通讯 实现手机短信验证用户注册
Laravel框架简介: Laravel是一套简洁.优雅的PHP Web开发框架(PHP Web Framework).它可以让你从面条一样杂乱的代码中解脱出来:它可以帮你构建一个完美的网络APP,而 ...
- java 阿里云接口实现发送短信验证码
1.先去阿里云开通短信服务: 2.添加模板及签名:需要审核,个人账户审核就几分钟就OK 先解释一下模板及签名: 标准参照:https://help.aliyun.com/document_detail ...
- 云通讯——发送短信验证码
1.首先,注册账号,容联云通讯网址:点我 2.添加一个用于测试接收短信验证码的的手机号 插件包及其使用说明 模板短信 SDK 下载: https://www.yuntongxun.com/doc/re ...
- Flask项目--发送短信验证码
1.后端代码 具体代码如下: # GET /api/v1.0/sms_codes/<mobile>?image_code=xxxx&image_code_id=xxxx @api. ...
最新文章
- celery 运行时 (from . import async, base)SyntaxError: invalid syntax 异常的解决方案
- 下一代Asp.net开发规范OWIN(2)—— Katana介绍以及使用
- 关于flash网页播放中wmode和direct
- A8下超级终端调试问题
- 自学前端真的没有前途吗?
- beeline执行sql文件_【SparkSQL】介绍、与Hive整合、Spark的th/beeline/jdbc/thriftserve2、shell方式使用SQL...
- 判断参数大于0_能做条件判断的文本函数
- java换行(java换行代码)
- Adobe Flash Player 不是最新版本
- 纪念我的第一次面试——华为研发类面试
- 【无标题】collecting ... collected 0 items pytest解决方法
- 关闭webstorm提示 empty tag doesn't work in some browsers
- 如何摆脱NAS中的振动和噪音
- 【英语】英语写作——三段式开头
- 工作后,又想读个名校的计算机硕士,该怎么做?
- ORA-12569: TNS: 包校验和失败解决方法一例
- NB-IoT网络架构
- springboot线程中获取spring beans
- 椭圆标准方程生成算法
- adblock 优酷