文章目录

  • 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异步发送短信验证码相关推荐

  1. java通过容联云通讯实现发送短信验证码

    1.在容联云通讯上根据 -接入流程 完成以下的步骤 创建应用 申请短信签名 配置测试号码等等 最终可以拿到SID和TOKEN.之后把官网上的Demo下载下来,把里面的jar包加到你的项目里面 Cont ...

  2. 容联云通讯php短信接口,开发中使用 【容联 云通信】获取短信验证码的 Javascript 接口...

    开发中使用 [容联 云通信]获取短信验证码的 Javascript 接口 在平台应用列表添加应用. 在测试号码中绑定测试手机号码,只有这个号码能接收验证短信. 在项目中绑定配置:将控制台首页的开发者主 ...

  3. Dython 容联云的一个测试短信验证码

    import random,redis from ronglian_sms_sdk import SmsSDK accId = '8a216da882f1f59401835463b6491132'  ...

  4. 手机异步发送短信验证码解决方案-Celery+redis

    Celery介绍和使用 一.Celery介绍: 一个简单.灵活且可靠.处理大量消息的分布式系统,可以在一台或者多台机器上运行. Celery是一个功能完备即插即用的任务队列 单个 Celery 进程每 ...

  5. 阿里云接口实现发送短信验证码

    java 阿里云接口实现发送短信验证码 1. 阿里云后台配置短信相关 1.1 开通短信服务 1.2 添加模板签名 1.3 创建秘钥 1.4 短信需要后台授权--注意点 2 java--简单实现短信验证 ...

  6. laravel+容联.云通讯 实现手机短信验证用户注册

    Laravel框架简介: Laravel是一套简洁.优雅的PHP Web开发框架(PHP Web Framework).它可以让你从面条一样杂乱的代码中解脱出来:它可以帮你构建一个完美的网络APP,而 ...

  7. java 阿里云接口实现发送短信验证码

    1.先去阿里云开通短信服务: 2.添加模板及签名:需要审核,个人账户审核就几分钟就OK 先解释一下模板及签名: 标准参照:https://help.aliyun.com/document_detail ...

  8. 云通讯——发送短信验证码

    1.首先,注册账号,容联云通讯网址:点我 2.添加一个用于测试接收短信验证码的的手机号 插件包及其使用说明 模板短信 SDK 下载: https://www.yuntongxun.com/doc/re ...

  9. Flask项目--发送短信验证码

    1.后端代码 具体代码如下: # GET /api/v1.0/sms_codes/<mobile>?image_code=xxxx&image_code_id=xxxx @api. ...

最新文章

  1. celery 运行时 (from . import async, base)SyntaxError: invalid syntax 异常的解决方案
  2. 下一代Asp.net开发规范OWIN(2)—— Katana介绍以及使用
  3. 关于flash网页播放中wmode和direct
  4. A8下超级终端调试问题
  5. 自学前端真的没有前途吗?
  6. beeline执行sql文件_【SparkSQL】介绍、与Hive整合、Spark的th/beeline/jdbc/thriftserve2、shell方式使用SQL...
  7. 判断参数大于0_能做条件判断的文本函数
  8. java换行(java换行代码)
  9. Adobe Flash Player 不是最新版本
  10. 纪念我的第一次面试——华为研发类面试
  11. 【无标题】collecting ... collected 0 items pytest解决方法
  12. 关闭webstorm提示 empty tag doesn't work in some browsers
  13. 如何摆脱NAS中的振动和噪音
  14. 【英语】英语写作——三段式开头
  15. 工作后,又想读个名校的计算机硕士,该怎么做?
  16. ORA-12569: TNS: 包校验和失败解决方法一例
  17. NB-IoT网络架构
  18. springboot线程中获取spring beans
  19. 椭圆标准方程生成算法
  20. adblock 优酷

热门文章

  1. 应用结构体实现通讯录
  2. Spring中多语言页面适配方案总结
  3. uhs3内存卡有哪些_高速内存卡是什么 3款热门高速内存卡推荐
  4. Android Camera硬件结构组成(一)之 手机摄像头的组成结构和工作原理
  5. 连接tcp服务器出现的问题及解决方法
  6. 新机器导致显示器发黄的问题
  7. kivy android wifi,Kivy / Buildozer VM Ubuntu不能连接到网络的问题解决
  8. 极速office(Word)怎么调出标尺
  9. 程序员普遍用gmail_使Gmail更好的最佳Chrome扩展程序
  10. 项目管理--项目组织