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处理文本文件并生成指定格式的文件
Jul 31 Python
Python实现大文件排序的方法
Jul 10 Python
浅谈python新手中常见的疑惑及解答
Jun 14 Python
Python中装饰器兼容加括号和不加括号的写法详解
Jul 05 Python
python利用paramiko连接远程服务器执行命令的方法
Oct 16 Python
numpy中的高维数组转置实例
Apr 17 Python
python 正确保留多位小数的实例
Jul 16 Python
python绘制动态曲线教程
Feb 24 Python
Python collections.defaultdict模块用法详解
Jun 18 Python
解析Tensorflow之MNIST的使用
Jun 30 Python
Selenium及python实现滚动操作多种方法
Jul 21 Python
python实现图片转字符画的完整代码
Feb 21 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
预告映像公开!第1章续篇剧场版动画《Princess Principal Crown Handler》4月10日上映!
2020/03/06 日漫
php扩展ZF――Validate扩展
2008/01/10 PHP
php设计模式之单例、多例设计模式的应用分析
2013/06/30 PHP
php文件缓存类汇总
2014/11/21 PHP
php命令行模式代码实例详解
2021/02/26 PHP
很全的显示阴历(农历)日期的js代码
2009/01/01 Javascript
js 发个判断字符串是否为符合标准的函数
2009/04/27 Javascript
jquery的Theme和Theme Switcher使用小结
2010/09/08 Javascript
JavaScript自定义DateDiff函数(兼容所有浏览器)
2012/03/01 Javascript
Jquery 数据选择插件Pickerbox使用介绍
2012/08/24 Javascript
页面回到顶部的三种实现(锚标记,js)
2012/10/01 Javascript
jquery.autocomplete修改实现键盘上下键自动填充示例
2013/11/19 Javascript
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
2013/12/06 Javascript
多种方法实现360浏览器下禁止自动填写用户名密码
2014/06/16 Javascript
深入理解JavaScript系列(39):设计模式之适配器模式详解
2015/03/04 Javascript
三个js循环的关键字示例(for与while)
2016/02/16 Javascript
JS简单判断滚动条的滚动方向实现方法
2017/04/28 Javascript
React Native AsyncStorage本地存储工具类
2017/10/24 Javascript
Vue仿支付宝支付功能
2018/05/25 Javascript
浅析微信扫码登录原理(小结)
2018/10/29 Javascript
Vue-CLI 3.X 部署项目至生产服务器的方法
2019/03/22 Javascript
angular使用md5,CryptoJS des加密的方法
2019/06/03 Javascript
JS实现的简单tab切换功能完整示例
2019/06/20 Javascript
js实现经典贪吃蛇小游戏
2020/03/19 Javascript
js实现扫雷源代码
2020/11/27 Javascript
Python3 加密(hashlib和hmac)模块的实现
2017/11/23 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
使用 Python 实现简单的 switch/case 语句的方法
2018/09/17 Python
tensorflow从ckpt和从.pb文件读取变量的值方式
2020/05/26 Python
python属于哪种语言
2020/08/16 Python
韩国三星集团旗下时尚品牌官网:SSF SHOP
2016/08/02 全球购物
Bibloo奥地利:购买女装、男装、童装、鞋和配件
2018/10/18 全球购物
西班牙三叶草药房:Farmacias Trébol
2019/05/03 全球购物
Farfetch巴西官网:奢侈品牌时尚购物平台
2020/10/19 全球购物
.NET面试题:什么是值类型和引用类型
2016/01/12 面试题
Nginx实现会话保持的两种方式
2022/03/18 Servers