Python Celery异步任务队列使用方法解析


Posted in Python onAugust 10, 2020

Celery是一个异步的任务队列(也叫做分布式任务队列),一个简单,灵活,可靠的分布式系统,用于处理大量消息,同时为操作提供维护此类系统所需要的工具。

celery的优点

1:简单,容易使用,不需要配置文件

2:高可用,任务执行失败或执行过程中发生连续中断,celery会自动尝试重新执行任务

3:快速,一个单进程的celery每分钟可以处理上百万个任务

4:灵活,几乎celery的各个组件都可以被扩展

celery应用场景

1:异步发邮件,一般发邮件等比较耗时的操作,这个时候需要提交任务给celery就可以了,由worker进行发邮件操作

2:有些跑批量接口任务,需要耗时较长,也可以做成异步任务

3:定时调度任务

Celery与Django一起使用(以发送短信为例)

独立于项目新建一个package包

在package包中新建一个名为sms的package包

新建tasks.py文件

#定义耗时的函数
from utils.ytx_sdk.sendSMS import CCP
from celery_tasks.main import app

#为函数添加装饰器,这个函数就成为了celery的任务
@app.task
def send_sms_code(mobile,code,expires,template_id):
  try:
    # CCP.sendTemplateSMS(mobile,code,expires,template_id)
    print(code)
  except:
    return '发送短信失败'

在package包中新建config.py

内容如下(中间人,接收生产者发来的消息即Task,将任务存入队列。任务的消费者是Worker。Celery本身不提供队列服务,推荐用Redis或RabbitMQ实现队列服务。)

#指定代理人队列==>redis
broker_url='redis://127.0.0.1:6379/15'

在package包中新建main.py

内容如下(需要将task注册到celery应用中)

#启动工人的文件
from celery import Celery
# 为celery使用django配置文件进行设置
import os
if not os.getenv('DJANGO_SETTINGS_MODULE'):
  os.environ['DJANGO_SETTINGS_MODULE'] = 'yinyue.settings.dev'
# 创建celery应用
app = Celery('yinyue')
# 导入celery配置
app.config_from_object('celery_tasks.config')
# 自动注册celery任务
app.autodiscover_tasks([
  'celery_tasks.sms'
])

在django框架对应模块的视图中使用

#调用celery的任务:任务名.delay(参数)
send_sms_code.delay(mobile,code,constants.SMS_CODE_EXPIRES/60,1)

启动celery服务: celery -A celery_tasks.main worker -l info

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python简单文本处理的方法
Jul 10 Python
Python实现的朴素贝叶斯分类器示例
Jan 06 Python
python中format()函数的简单使用教程
Mar 14 Python
基于DATAFRAME中元素的读取与修改方法
Jun 08 Python
windows下numpy下载与安装图文教程
Apr 02 Python
python实现kNN算法识别手写体数字的示例代码
Aug 16 Python
Python面向对象中类(class)的简单理解与用法分析
Feb 21 Python
关于Python 中的时间处理包datetime和arrow的方法详解
Mar 19 Python
python导入库的具体方法
Jun 18 Python
pycharm 2020 1.1的安装流程
Sep 29 Python
Python之字符串的遍历的4种方式
Dec 08 Python
Python中过滤字符串列表的方法
Dec 22 Python
使用Python将语音转换为文本的方法
Aug 10 #Python
Python获取excel内容及相关操作代码实例
Aug 10 #Python
Python利用命名空间解析XML文档
Aug 10 #Python
Python如何定义有默认参数的函数
Aug 10 #Python
如何更换python默认编辑器的背景色
Aug 10 #Python
django前端页面下拉选择框默认值设置方式
Aug 09 #Python
解决Django响应JsonResponse返回json格式数据报错问题
Aug 09 #Python
You might like
什么是调频(FM)、调幅(AM)、短波(SW)、长波(LW)
2021/03/01 无线电
一个简单的自动发送邮件系统(三)
2006/10/09 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
利用Laravel事件系统如何实现登录日志的记录详解
2017/05/20 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
2018/12/05 PHP
thinkphp5框架API token身份验证功能示例
2019/05/21 PHP
兼容多浏览器的iframe自适应高度(ie8 、谷歌浏览器4.0和 firefox3.5.3)
2009/11/04 Javascript
JQuery从头学起第一讲
2010/07/04 Javascript
JavaScript 操作键盘的Enter事件(键盘任何事件),兼容多浏览器
2010/10/11 Javascript
js 数据类型转换总结笔记
2011/01/17 Javascript
jquery预览图片实现鼠标放上去显示实际大小
2014/01/16 Javascript
node.js中的fs.lchmod方法使用说明
2014/12/16 Javascript
JS判断字符串包含的方法
2015/05/05 Javascript
详解原生js实现offset方法
2017/06/15 Javascript
JS检测window.open打开的窗口是否关闭
2017/06/25 Javascript
vue实现扫码功能
2020/01/17 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
2020/07/13 Javascript
js异步接口并发数量控制的方法示例
2020/11/22 Javascript
node.js文件的复制、创建文件夹等相关操作
2021/02/05 Javascript
python解析xml文件实例分析
2015/05/27 Python
jupyter安装小结
2016/03/13 Python
在pycharm中设置显示行数的方法
2019/01/16 Python
Python 实现微信防撤回功能
2019/04/29 Python
python+selenium+chromedriver实现爬虫示例代码
2020/04/10 Python
什么是python的列表推导式
2020/05/26 Python
挪威户外活动服装和装备购物网站:Bergfreunde挪威
2016/10/20 全球购物
监理员的岗位职责
2013/11/13 职场文书
连锁酒店店长职责范本
2014/02/13 职场文书
让世界充满爱演讲稿
2014/05/24 职场文书
运动会演讲稿300字
2014/08/25 职场文书
酒店销售经理岗位职责
2015/04/02 职场文书
质检员工作总结2015
2015/04/25 职场文书
迎新晚会主持词开场白
2015/05/28 职场文书
小学教师师德培训心得体会
2016/01/09 职场文书
2019大学毕业晚会主持词
2019/06/21 职场文书
Golang Web 框架Iris安装部署
2022/08/14 Python