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中的函数用法入门教程
Sep 02 Python
Python中的自定义函数学习笔记
Sep 23 Python
python uuid模块使用实例
Apr 08 Python
python开发之str.format()用法实例分析
Feb 22 Python
Python使用pymysql小技巧
Jun 04 Python
Python处理Excel文件实例代码
Jun 20 Python
浅谈Python中的作用域规则和闭包
Mar 20 Python
Python 通过截图匹配原图中的位置(opencv)实例
Aug 27 Python
基于python实现FTP文件上传与下载操作(ftp&sftp协议)
Apr 01 Python
python性能测试工具locust的使用
Dec 28 Python
Python爬虫UA伪装爬取的实例讲解
Feb 19 Python
python实现Nao机器人的单目测距
Sep 04 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原生模板引擎 最简单的模板引擎
2012/04/25 PHP
PHP生成唯一订单号
2015/07/05 PHP
详解php 使用Callable Closure强制指定回调类型
2017/10/26 PHP
JavaScript方法和技巧大全
2006/12/27 Javascript
javascript 客户端验证上传图片的大小(兼容IE和火狐)
2009/08/15 Javascript
js常用排序实现代码
2010/12/28 Javascript
window.requestAnimationFrame是什么意思,怎么用
2013/01/13 Javascript
JavaScript 命名空间 使用介绍
2013/08/29 Javascript
javascript获得网页窗口实际大小的示例代码
2013/09/21 Javascript
JavaScript在IE和FF下的兼容性问题
2014/05/19 Javascript
快速解决js中window.location.href不工作的问题
2016/11/02 Javascript
javascript中this用法实例详解
2017/04/06 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
2017/12/13 Javascript
详解vue-cli 构建项目 vue-cli请求后台接口 vue-cli使用axios、sass、swiper
2018/05/28 Javascript
axios封装,使用拦截器统一处理接口,超详细的教程(推荐)
2019/05/02 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
2019/08/08 Javascript
python中实现指定时间调用函数示例代码
2017/09/08 Python
利用ctypes获取numpy数组的指针方法
2019/02/12 Python
python修改字典键(key)的方法
2019/08/05 Python
Python多线程及其基本使用方法实例分析
2019/10/29 Python
TensorFlow实现checkpoint文件转换为pb文件
2020/02/10 Python
获取CSDN文章内容并转换为markdown文本的python
2020/09/06 Python
简单几步用纯CSS3实现3D翻转效果
2019/01/17 HTML / CSS
HTML5 播放 RTSP 视频的实例代码
2019/07/29 HTML / CSS
美国名牌香水折扣网站:Hottperfume
2021/02/10 全球购物
如何写好优秀的创业计划书
2014/01/30 职场文书
小学毕业感言150字
2014/02/05 职场文书
《木笛》教学反思
2014/03/01 职场文书
个人总结怎么写
2015/02/26 职场文书
社区公民道德宣传日活动总结
2015/03/23 职场文书
2015年度服装销售工作总结
2015/03/31 职场文书
上诉状格式
2015/05/23 职场文书
高中家长意见怎么写
2015/06/03 职场文书
公司人事管理制度
2015/08/05 职场文书
html5 录制mp3音频支持采样率和比特率设置
2021/07/15 Javascript
SQL中的连接查询详解
2022/06/21 SQL Server