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使用PyGame模块播放声音的方法
May 20 Python
Python装饰器用法实例总结
Feb 07 Python
在Mac上删除自己安装的Python方法
Oct 29 Python
Django 创建/删除用户的示例代码
Jul 24 Python
Django分页功能的实现代码详解
Jul 29 Python
Python爬虫使用浏览器cookies:browsercookie过程解析
Oct 22 Python
TensorFlow 显存使用机制详解
Feb 03 Python
python实现密码强度校验
Mar 18 Python
Python类和实例的属性机制原理详解
Mar 21 Python
Python脚本导出为exe程序的方法
Mar 25 Python
PyQT5 实现快捷键复制表格数据的方法示例
Jun 19 Python
使用pytorch 筛选出一定范围的值
Jun 28 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
PHP 分页原理分析,大家可以看看
2009/12/21 PHP
PHP实现的通过参数生成MYSQL语句类完整实例
2016/04/11 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
2016/06/19 PHP
超级兔子让浮动层消失的前因后果
2007/03/09 Javascript
网页前台通过js非法字符过滤代码(骂人的话等等)
2010/05/26 Javascript
淘宝搜索框效果实现分析
2011/03/05 Javascript
JQuery扩展插件Validate 2通过参数设置验证规则
2011/09/05 Javascript
JS打印gridview实现原理及代码
2013/02/05 Javascript
JS 实现获取打开一个界面中输入的值
2013/03/19 Javascript
基于JavaScript制作霓虹灯文字 代码 特效
2015/09/01 Javascript
简单实现轮播图效果的实例
2016/07/15 Javascript
AngularJs定制样式插入到ueditor中的问题小结
2016/08/01 Javascript
AngularJS基础 ng-switch 指令简单示例
2016/08/03 Javascript
AngularJS入门教程之多视图切换用法示例
2016/11/02 Javascript
Angular2实现自定义双向绑定属性
2017/03/22 Javascript
微信小程序按钮去除边框线分享页面功能
2018/08/27 Javascript
Vue.js实现的购物车功能详解
2019/01/27 Javascript
原生js实现的金山打字小游戏(实例代码详解)
2020/03/16 Javascript
浅谈JS for循环中使用break和continue的区别
2020/07/21 Javascript
[01:03]DOTA2新的征程 你的脚印值得踏上
2014/08/13 DOTA
Python学习笔记(二)基础语法
2014/06/06 Python
Python脚本获取操作系统版本信息
2016/12/17 Python
Python 多核并行计算的示例代码
2017/11/07 Python
python实发邮件实例详解
2019/11/11 Python
浅析python,PyCharm,Anaconda三者之间的关系
2019/11/27 Python
PyTorch: Softmax多分类实战操作
2020/07/07 Python
LocalStorage记住用户和密码功能
2017/07/24 HTML / CSS
毕业生找工作的求职信范文
2013/12/24 职场文书
促销活动总结
2014/04/28 职场文书
2014初中数学教研组工作总结
2014/12/19 职场文书
优秀教师个人总结
2015/02/11 职场文书
电子商务专业求职信范文
2015/03/19 职场文书
部门经理助理岗位职责
2015/04/13 职场文书
本科毕业论文答辩稿
2015/06/23 职场文书
中国古风插画师排行榜:夏达第一,第三是阴阳师姑获鸟皮肤创作者
2022/03/18 国漫
Win2008系统搭建DHCP服务器
2022/06/25 Servers