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中的正则表达式的用法
Apr 09 Python
python3中dict(字典)的使用方法示例
Mar 22 Python
Python生成8位随机字符串的方法分析
Dec 05 Python
Numpy 将二维图像矩阵转换为一维向量的方法
Jun 05 Python
python中的不可变数据类型与可变数据类型详解
Sep 16 Python
Python解析、提取url关键字的实例详解
Dec 17 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
Feb 20 Python
python游戏开发的五个案例分享
Mar 09 Python
Keras SGD 随机梯度下降优化器参数设置方式
Jun 19 Python
解决python 输出到csv 出现多空行的情况
Mar 24 Python
Python爬虫之自动爬取某车之家各车销售数据
Jun 02 Python
关于Python中*args和**kwargs的深入理解
Aug 07 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 日期时间函数的高级应用技巧
2009/10/10 PHP
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
2011/01/06 Javascript
JQuery中$之选择器用法介绍
2011/04/05 Javascript
javascript 学习笔记(六)浏览器类型及版本信息检测代码
2011/04/08 Javascript
nodeType属性返回被选节点的节点类型介绍
2013/11/22 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
在JS方法中返回多个值的方法汇总
2015/05/20 Javascript
jQuery实现点击小图片淡入淡出显示大图片特效
2015/09/09 Javascript
jQuery Validate插件实现表单强大的验证功能
2015/12/18 Javascript
实例讲解JavaScript中的this指向错误解决方法
2016/06/13 Javascript
基于Vue.js实现简单搜索框
2020/03/26 Javascript
微信小程序开发之Tabbar实例详解
2017/01/09 Javascript
常用的js方法合集
2017/03/10 Javascript
vue v-model表单控件绑定详解
2017/05/17 Javascript
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
2018/07/31 NodeJs
使用Vue-scroller页面input框不能触发滑动的问题及解决方法
2020/08/08 Javascript
[47:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第二场 3月4日
2021/03/11 DOTA
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
2015/10/18 Python
python编码总结(编码类型、格式、转码)
2016/07/01 Python
对Python通过pypyodbc访问Access数据库的方法详解
2018/10/27 Python
Python快速转换numpy数组中Nan和Inf的方法实例说明
2019/02/21 Python
使用Python将Exception异常错误堆栈信息写入日志文件
2020/04/08 Python
Python基于Hypothesis测试库生成测试数据
2020/04/29 Python
Python 实现PS滤镜的旋涡特效
2020/12/03 Python
HTML5之SVG 2D入门11—用户交互性(动画)介绍及应用
2013/01/30 HTML / CSS
航空大学应届生求职信
2013/11/10 职场文书
会计专业自我鉴定范文
2013/12/29 职场文书
英文商务邀请信
2014/01/22 职场文书
五好党支部事迹材料
2014/02/06 职场文书
化妆品促销方案
2014/02/24 职场文书
2014年大班元旦活动方案
2014/02/26 职场文书
好学生评语大全
2014/05/05 职场文书
教师先进事迹材料
2014/12/16 职场文书
企业安全生产检查制度
2015/08/06 职场文书
《岳阳楼记》原文、译文赏析
2019/09/10 职场文书
MySQL 视图(View)原理解析
2021/05/19 MySQL