千家信息网

Django异步编程实现发送短信验证码代码示例

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"Django异步编程实现发送短信验证码代码示例",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Django异步编程实现发送短信验证码
千家信息网最后更新 2026年11月02日Django异步编程实现发送短信验证码代码示例

这篇文章主要讲解了"Django异步编程实现发送短信验证码代码示例",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Django异步编程实现发送短信验证码代码示例"吧!

目录
  • celery

    • 1.celery介绍

      • 1.1 celery应用举例

      • 1.2 Celery有以下优点

      • 1.3 Celery 特性

    • 2.工作原理

      • 2.1 Celery 扮演生产者和消费者的角色

    • 3.异步发短信

      • 1.settings同级目录下创建 celery 文件

      • 2.配置settings文件

      • 3 配置 settings同级目录下 init 文件

      • 4.在utils下新建一个task.py文件

      • 5.接口中调用

      • 6 .先启动django项目 然后另开终端 cd到项目

celery

1.celery介绍

1.1 celery应用举例
  • Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理,如果你的业务场景中需要用到异步任务,就可以考虑使用celery

  • 你想对100台机器执行一条批量命令,可能会花很长时间 ,但你不想让你的程序等着结果返回,而是给你返回 一个任务ID,你过一段时间只需要拿着这个任务id就可以拿到任务执行结果, 在任务执行ing进行时,你可以继续做其它的事情

  • Celery 在执行任务时需要通过一个消息中间件来接收和发送任务消息,以及存储任务结果, 一般使用rabbitMQ or Redis

1.2 Celery有以下优点

简单:一单熟悉了celery的工作流程后,配置和使用还是比较简单的

高可用:当任务执行失败或执行过程中发生连接中断,celery 会自动尝试重新执行任务快速:一个单进程的celery每分钟可处理上百万个任务

灵活: 几乎celery的各个组件都可以被扩展及自定制

1.3 Celery 特性

方便查看定时任务的执行情况, 如 是否成功, 当前状态, 执行任务花费的时间等.

可选 多进程, Eventlet 和 Gevent 三种模型并发执行.

Celery 是语言无关的.它提供了python 等常见语言的接口支持.

2.工作原理

2.1 Celery 扮演生产者和消费者的角色

Celery Beat : 任务调度器. Beat 进程会读取配置文件的内容, 周期性的将配置中到期需要执行的任务发送给任务队列.

Celery Worker : 执行任务的消费者, 通常会在多台服务器运行多个消费者, 提高运行效率.

Broker : 消息代理, 队列本身. 也称为消息中间件. 接受任务生产者发送过来的任务消息, 存进队列再按序分发给任务消费方(通常是消息队列或者数据库).

Producer : 任务生产者. 调用 Celery API , 函数或者装饰器, 而产生任务并交给任务队列处理的都是任务生产者.

Result Backend : 任务处理完成之后保存状态信息和结果, 以供查询.

3.异步发短信

1.settings同级目录下创建 celery 文件
from __future__ import absolute_import, unicode_literalsimport osfrom celery import Celery# 设置环境变量os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'meiduo.settings')# 注册Celery的APPapp = Celery('meiduo')# 绑定配置文件app.config_from_object('django.conf:settings', namespace='CELERY')# 自动发现各个app下的tasks.py文件app.autodiscover_tasks()
2.配置settings文件
CELERY_BROKER_URL = 'redis://127.0.0.1:6379/'CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/'CELERY_RESULT_SERIALIZER = 'json'
3 配置 settings同级目录下 init 文件
from __future__ import absolute_import, unicode_literalsfrom .celery import app as celery_app__all__ = ['celery_app']
4.在utils下新建一个task.py文件
from celery.task import taskfrom .comm import send_message# 定义发送邮件的方法@taskdef mail(mobile,code):    send_message(mobile,code,5)
5.接口中调用
from utils.tasks import mailimport randomclass SendMes(APIView):    # 短信验证    def get(self,request):        # 接收客户端发送的数据        imagecode = request.query_params.get('imagecode')        print(imagecode)        mobile = request.query_params.get('mobile')        print(mobile)        uuid = request.query_params.get('uuid')        print(uuid)        if not all([imagecode,mobile]):            return Response({'msg':'没有获取到'})        # 验证图片验证码        conn =get_redis_conn()        # redis 中取验证码        code = conn.get(uuid)        print(code)        if code:            code = str(code,encoding='utf8')            # 图片验证码对比            if imagecode.lower() == code.lower():                # 验证通过后调用发送短信接口                sms_code = random.randint(10000,99999)                # 重点 重点 重点!!!!!!!                result = mail.delay(mobile,sms_code,1)               # 加入短信吗发送成功                if result:                    # redis中要存短信验证吗                    conn.setex(mobile,60,sms_code)                    # 把图片验证码从redis中删除                    conn.delete(uuid)                    return Response({'msg':sms_code})                else:                    return ({'msg':'发送失败'})            else:                return Response({'msg':'验证码不正确'})        return Response('ok')
6 .先启动django项目 然后另开终端 cd到项目

目录下启动celery 服务 指定并发数 --autoscale(最多,最少)

celery worker -A meiduo --loglevel=info --pool=solo --autoscale=50,5

感谢各位的阅读,以上就是"Django异步编程实现发送短信验证码代码示例"的内容了,经过本文的学习后,相信大家对Django异步编程实现发送短信验证码代码示例这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

任务 验证 文件 短信 配置 消息 目录 队列 生产者 消费 生产 代码 示例 编程 同级 接口 消费者 结果 项目 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 金融科技与互联网金融 卓越科技(互联网 ) 互联网金融科技创新 腾讯科技 互联网女皇 奇士达互联网科技 亿账通互联网科技 北京禾田雨橡互联网科技 互联网公司会议桌创意科技软装饰 福州新华互联网科技学校 知乎 北京华百购互联网科技有限公司 受益于互联网科技的高速发展 互联网科技扶贫时间 深圳艾果互联网通讯科技 富国互联网科技002692 山东大美朱楼互联网科技有限公司 版纳互联网科技选哪家 艺电能源互联网科技有限公司招聘 北京互联网科技类企业分布 互联网科技博主张洲 互联网高科技绘画 智慧科技互联网 互联网养老 桔豆科技 江苏南京365互联网科技 广州慧亚互联网科技怎么样 互联网科技中介 开一家科技互联网公司需要多少钱 米聚互联网科技南京有限公司排面 互联网科技如何创业 深圳互联网科技的发展 西安左小互联网科技有限公司
0