python使用celery实现异步任务执行的例子


Posted in Python onAugust 28, 2019

使用celery在django项目中实现异步发送短信

在项目的目录下创建celery_tasks用于保存celery异步任务。

在celery_tasks目录下创建config.py文件,用于保存celery的配置信息

```broker_url = "redis://127.0.0.1/14"```

在celery_tasks目录下创建main.py文件,用于作为celery的启动文件

from celery import Celery
 # 为celery使用django配置文件进行设置

import os
if not os.getenv('DJANGO_SETTINGS_MODULE'):
  os.environ['DJANGO_SETTINGS_MODULE'] = 'model.settings.dev'

 # 创建celery应用

app = Celery('model')

 #导入celery配置

app.config_from_object('celery_tasks.config')
 #自动注册celery任务
app.autodiscover_tasks(['celery_tasks.sms'])

在celery_tasks目录下创建sms目录,用于放置发送短信的异步任务相关代码。

将提供的发送短信的云通讯SDK放到celery_tasks/sms/目录下。

在celery_tasks/sms/目录下创建tasks.py(这个名字是固定的,非常重要,系统将会自动从这个文件中找任务队列)文件,用于保存发送短信的异步任务

import logging

  from celery_tasks.main import app
  from .yuntongxun.sms import CCP

  logger = logging.getLogger("django")

   #验证码短信模板
  SMS_CODE_TEMP_ID = 1

  @app.task(name='send_sms_code')
    def send_sms_code(mobile, code, expires):

  发送短信验证码
  :param mobile: 手机号
  :param code: 验证码
  :param expires: 有效期
  :return: None


  try:
    ccp = CCP()
    result = ccp.send_template_sms(mobile, [code, expires], SMS_CODE_TEMP_ID)
  except Exception as e:
    logger.error("发送验证码短信[异常][ mobile: %s, message: %s ]" % (mobile, e))
  else:
    if result == 0:
      logger.info("发送验证码短信[正常][ mobile: %s ]" % mobile)
    else:
      logger.warning("发送验证码短信[失败][ mobile: %s ]" % mobile)

在verifications/views.py中改写SMSCodeView视图,使用celery异步任务发送短信

from celery_tasks.sms import tasks as sms_tasks

class SMSCodeView(GenericAPIView):
  ...
    # 发送短信验证码 这是将时间转化为分钟,constants.SMS_CODE_REDIS_EXPIRES 是常量
    sms_code_expires = str(constants.SMS_CODE_REDIS_EXPIRES // 60)

    sms_tasks.send_sms_code.delay(mobile, sms_code, sms_code_expires)

    return Response({"message": "OK"})

以上这篇python使用celery实现异步任务执行的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 获取本机ip地址的两个方法
Feb 25 Python
python检测是文件还是目录的方法
Jul 03 Python
bpython 功能强大的Python shell
Feb 16 Python
Python 3中print函数的使用方法总结
Aug 08 Python
深入分析python中整型不会溢出问题
Jun 18 Python
Python批量生成幻影坦克图片实例代码
Jun 04 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
Jul 31 Python
python分布式编程实现过程解析
Nov 08 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
Apr 10 Python
python 19个值得学习的编程技巧
Aug 15 Python
python pymysql库的常用操作
Oct 16 Python
Django程序的优化技巧
Apr 29 Python
Python Gitlab Api 使用方法
Aug 28 #Python
face++与python实现人脸识别签到(考勤)功能
Aug 28 #Python
OpenCV+face++实现实时人脸识别解锁功能
Aug 28 #Python
Python的垃圾回收机制详解
Aug 28 #Python
Python通过cv2读取多个USB摄像头
Aug 28 #Python
python3.5 cv2 获取视频特定帧生成jpg图片
Aug 28 #Python
Django--权限Permissions的例子
Aug 28 #Python
You might like
如何获得PHP相关资料
2006/10/09 PHP
PHP+ajax分页实例简析
2015/12/07 PHP
PHP动态生成指定大小随机图片的方法
2016/03/25 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
PHP预定义接口――Iterator用法示例
2020/06/05 PHP
jQuery 表单验证扩展代码(一)
2010/10/11 Javascript
jQuery中ajax和post处理json的不同示例对比
2014/11/02 Javascript
深入理解JavaScript中的箭头函数
2015/07/28 Javascript
jQuery zTree加载树形菜单功能
2016/02/25 Javascript
JS中innerHTML和pasteHTML的区别实例分析
2016/06/22 Javascript
webpack4 升级迁移的实现
2018/09/12 Javascript
详解ES6 Promise对象then方法链式调用
2018/10/20 Javascript
JS实现的字符串数组去重功能小结
2019/06/17 Javascript
vue 移动端注入骨架屏的配置方法
2019/06/25 Javascript
vue中动态select的使用方法示例
2019/10/28 Javascript
node解析修改nginx配置文件操作实例分析
2019/11/06 Javascript
基于原生js实现判断元素是否有指定class名
2020/07/11 Javascript
vue中后端做Excel导出功能返回数据流前端的处理操作
2020/09/08 Javascript
Vue使用Element实现增删改查+打包的步骤
2020/11/25 Vue.js
Python兔子毒药问题实例分析
2015/03/05 Python
django实现分页的方法
2015/05/26 Python
python 实现让字典的value 成为列表
2019/12/16 Python
python中return的返回和执行实例
2019/12/24 Python
Tensorflow加载Vgg预训练模型操作
2020/05/26 Python
雅虎笔试题(字符串操作)
2015/03/24 面试题
什么是.net的Remoting技术
2016/07/08 面试题
网络工程师面试(三木通信技术有限公司)
2013/06/05 面试题
运动会口号大全
2014/06/07 职场文书
党员群众路线剖析材料
2014/10/08 职场文书
骨干教师考核评语
2014/12/31 职场文书
市场督导岗位职责
2015/04/10 职场文书
2015年党员岗位承诺书
2015/04/27 职场文书
质量承诺书格式范文
2015/04/28 职场文书
2015年学校医务室工作总结
2015/07/20 职场文书
CSS预处理框架——Stylus
2021/04/21 HTML / CSS
Mysql数据库表中为什么有索引却没有提高查询速度
2022/02/24 MySQL