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实用技巧两则
Aug 29 Python
用Python中的字典来处理索引统计的方法
May 05 Python
python里使用正则的findall函数的实例详解
Oct 19 Python
numpy数组拼接简单示例
Dec 15 Python
Python 中字符串拼接的多种方法
Jul 30 Python
在python中只选取列表中某一纵列的方法
Nov 28 Python
在PyCharm中批量查找及替换的方法
Jan 20 Python
windows下numpy下载与安装图文教程
Apr 02 Python
如何用C代码给Python写扩展库(Cython)
May 17 Python
ORM Django 终端打印 SQL 语句实现解析
Aug 09 Python
python多线程和多进程关系详解
Dec 14 Python
Python利用zhdate模块实现农历日期处理
Mar 31 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
Body是什么,该怎么喝出咖啡里的口感
2021/03/03 咖啡文化
PHP中文件缓存转内存缓存的方法
2011/12/06 PHP
PHP 第二节 数据类型之转换
2012/04/28 PHP
jquery获取多个checkbox的值异步提交给php的方法
2015/06/24 PHP
利用PHPExcel实现Excel文件的写入和读取
2017/04/26 PHP
baidu博客的编辑友情链接的新的层窗口!经典~支持【FF】
2007/02/09 Javascript
基于jquery的无限级联下拉框js插件
2011/10/29 Javascript
animate动画示例(泪奔的小孩)及stop和delay的使用
2013/05/06 Javascript
Javascript合并表格中具有相同内容单元格示例
2013/08/11 Javascript
jquery 按键盘上的enter事件
2014/05/11 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
JS实现隐藏同级元素后只显示JS文件内容的方法
2016/09/04 Javascript
js实现弹窗居中的简单实例
2016/10/09 Javascript
Bootstrap基本插件学习笔记之按钮(21)
2016/12/08 Javascript
详解VUE的状态控制与延时加载刷新
2017/03/27 Javascript
vue watch自动检测数据变化实时渲染的方法
2018/01/16 Javascript
angularJs使用ng-repeat遍历后选中某一个的方法
2018/09/30 Javascript
RxJS在TypeScript中的简单使用详解
2020/04/13 Javascript
vue 实现在同一界面实现组件的动态添加和删除功能
2020/06/16 Javascript
[04:30]显微镜下的DOTA2第五期——拉比克
2013/09/26 DOTA
Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
2015/04/08 Python
python 多线程实现检测服务器在线情况
2015/11/25 Python
python调用百度语音识别实现大音频文件语音识别功能
2018/08/30 Python
Python中使用logging和traceback模块记录日志和跟踪异常
2019/04/09 Python
python实现定时发送邮件
2020/12/23 Python
allbeauty美国:英国在线美容店
2019/03/11 全球购物
CNC数控操作工岗位职责
2013/11/19 职场文书
机电一体化专业推荐信
2013/12/03 职场文书
财务总监管理职责范文
2014/03/09 职场文书
乡镇镇长个人整改措施
2014/10/01 职场文书
2014年政协委员工作总结
2014/12/01 职场文书
立项申请报告范本
2015/05/15 职场文书
宪法宣传标语100条
2019/10/15 职场文书
导游词之四川武侯祠
2019/10/21 职场文书
Ajax请求超时与网络异常处理图文详解
2021/05/23 Javascript
教你用Python爬取英雄联盟皮肤原画
2021/06/13 Python