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抓取百度首页的方法
May 19 Python
在Python的Flask框架中验证注册用户的Email的方法
Sep 02 Python
python 转换 Javascript %u 字符串为python unicode的代码
Sep 06 Python
对tensorflow 的模型保存和调用实例讲解
Jul 28 Python
python组合无重复三位数的实例
Nov 13 Python
python用插值法绘制平滑曲线
Feb 19 Python
在Python中使用MongoEngine操作数据库教程实例
Dec 03 Python
Python如何用filter函数筛选数据
Mar 05 Python
python文件编写好后如何实践
Jul 07 Python
python如何删除列为空的行
Jul 17 Python
python获取百度热榜链接的实例方法
Aug 25 Python
tensorflow中的梯度求解及梯度裁剪操作
May 26 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
paypal即时到账php实现代码
2010/11/28 PHP
php设计模式 Decorator(装饰模式)
2011/06/26 PHP
php获取随机数组列表的方法
2014/11/13 PHP
php的debug相关函数用法示例
2016/07/11 PHP
php is_writable判断文件是否可写实例代码
2016/10/13 PHP
php实现登陆模块功能示例
2016/10/20 PHP
从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解
2019/04/03 PHP
window.open被浏览器拦截后的自定义提示效果代码
2007/11/19 Javascript
ExtJS的FieldSet的column列布局
2009/11/20 Javascript
传智播客学习之java 反射
2009/11/22 Javascript
JS 文件传参及处理技巧分析
2010/05/13 Javascript
用按钮控制iframe显示的网页实现方法
2013/02/04 Javascript
jQuery如何将选中的对象转化为原始的DOM对象
2014/06/09 Javascript
bootstrap如何让dropdown menu按钮式下拉框长度一致
2017/04/10 Javascript
mpvue小程序仿qq左滑置顶删除组件
2018/08/03 Javascript
vue子组件改变父组件传递的prop值通过sync实现数据双向绑定(DEMO)
2020/02/01 Javascript
ES6函数实现排它两种写法解析
2020/05/13 Javascript
python生成指定长度的随机数密码
2014/01/23 Python
老生常谈python函数参数的区别(必看篇)
2017/05/29 Python
Python cookbook(数据结构与算法)筛选及提取序列中元素的方法
2018/03/19 Python
python实现简单tftp(基于udp协议)
2018/07/30 Python
Flask配置Cors跨域的实现
2019/07/12 Python
安装python及pycharm的教程图解
2019/10/10 Python
opencv python 对指针仪表读数识别的两种方式
2021/01/14 Python
HTML5 图片预加载的示例代码
2020/03/25 HTML / CSS
国际化的太阳镜及太阳镜配件零售商:Sunglass Hut
2016/07/26 全球购物
Nisbets爱尔兰:英国最大的厨房和餐饮设备供应商
2019/01/26 全球购物
夏威夷咖啡公司:Hawaii Coffee Company
2019/09/19 全球购物
车辆年审委托书范本
2014/09/18 职场文书
人大代表选举标语
2014/10/07 职场文书
行政二审代理词
2015/05/25 职场文书
Nginx访问日志及错误日志参数说明
2021/03/31 Servers
为什么node.js不适合大型项目
2021/04/28 Javascript
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
2021/05/26 Python
详解Python中__new__方法的作用
2022/03/31 Python
详解OpenCV曝光融合
2022/04/29 Python