Django celery异步任务实现代码示例


Posted in Python onNovember 26, 2020

最近项目中用到celery很多,Django快速接入celery,这里给份教程。

准备

pip安装celery、flower、eventlet

Django celery异步任务实现代码示例

快速接入

1.项目目录的__init__文件

from __future__ import absolute_import

# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from .celerypro import app as celery_app

2.celerypro.py文件

from __future__ import absolute_import
import os
from celery import Celery
from django.conf import settings

# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'voice_quality_assurance_configure.settings') #修改项目配置文件的地址
app = Celery('voice_quality_assurance_configure') #修改项目目录名称
# Using a string here means the worker will not have to
# pickle the object when using Windows.
app.config_from_object('voice_quality_assurance_configure.celeryconfig') #修改celery配置文件的地址
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

3.celeryconfig.py文件,更多配置项,可以查看官方文档。

from kombu import Queue
BROKER_URL = 'amqp://用户名:密码@ip:5672'# 指定 Broker
CELERY_RESULT_BACKEND = 'rpc://用户名:密码@ip:5672'# 指定 Backend
CELERY_TIMEZONE='Asia/Shanghai'# 指定时区,默认是 UTC
CELERY_TASK_SERIALIZER = 'pickle'
CELERY_RESULT_SERIALIZER = 'pickle'
CELERY_ACCEPT_CONTENT = ['pickle', 'json']
CELERY_IGNORE_RESULT = True
# CELERY_TIMEZONE='UTC'
CELERY_IMPORTS = (
  # 指定导入的任务模块
  'apps.mission.tasks'
)
CELERY_QUEUES = (
  Queue('default', routing_key='default'), #声明队列和对应路由键
  Queue('worker_queue', routing_key='worker'), #声明队列和对应路由键
)
CELERY_ROUTES = {
  'apps.mission.tasks.createsingletask': {'queue': 'worker_queue', 'routing_key': 'worker'},
}

app代码如何使用

app下新建tasks.py文件,名字一定要是tasks。(我这里是mission app下的tasks.py)

from celery import shared_task
@shared_task()
def createsingletask():
  print(test)

app下views调用如下:(我这里是mission app下的views.py)

from .tasks import createsingletask

createsingletask.apply_async(())

快速测试和监控

启动多个celery worker,-A 指定项目目录, -P 指定方式,我这里以协程方式运行, -n指定name

celery worker -A voice_quality_assurance_configure --loglevel=info -P eventlet -n worker1
celery worker -A voice_quality_assurance_configure --loglevel=info -P eventlet -n worker2
celery worker -A voice_quality_assurance_configure --loglevel=info -P eventlet -n worker3
celery worker -A voice_quality_assurance_configure --loglevel=info -P eventlet -n worker4
celery worker -A voice_quality_assurance_configure --loglevel=info -P eventlet -n worker5

启动flower监控

celery flower --broker=amqp://用户名:密码@ip:5672 --broker-api=http://用户名:密码@ip:15672/api/

查看监控,注意这里的监控数据是不持久化的。

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

Python 相关文章推荐
python检测服务器是否正常
Feb 16 Python
python 容器总结整理
Apr 04 Python
Python基于分析Ajax请求实现抓取今日头条街拍图集功能示例
Jul 19 Python
python3安装speech语音模块的方法
Dec 24 Python
Python如何使用k-means方法将列表中相似的句子归类
Aug 08 Python
python栈的基本定义与使用方法示例【初始化、赋值、入栈、出栈等】
Oct 24 Python
python 实现视频 图像帧提取
Dec 10 Python
Python使用turtle库绘制小猪佩奇(实例代码)
Jan 16 Python
python3操作注册表的方法(Url protocol)
Feb 05 Python
python利用opencv实现SIFT特征提取与匹配
Mar 05 Python
Python运行异常管理解决方案
Mar 09 Python
Python中logging日志记录到文件及自动分割的操作代码
Aug 05 Python
Django通过设置CORS解决跨域问题
Nov 26 #Python
Django利用elasticsearch(搜索引擎)实现搜索功能
Nov 26 #Python
python模拟点击在ios中实现的实例讲解
Nov 26 #Python
如何在 Matplotlib 中更改绘图背景的实现
Nov 26 #Python
python 实现超级玛丽游戏
Nov 25 #Python
python 制作简单的音乐播放器
Nov 25 #Python
python中绕过反爬虫的方法总结
Nov 25 #Python
You might like
《DOTA3》开发工作已经开始 《DOTA3》将代替《DOTA2》
2021/03/06 DOTA
php中的一个中文字符串截取函数
2007/02/14 PHP
在VS2008中编译MYSQL5.1.48的方法
2010/07/03 PHP
Zend Framework入门教程之Zend_Db数据库操作详解
2016/12/08 PHP
浅谈laravel中的关联查询with的问题
2019/10/10 PHP
JavaScript 入门基础知识 想学习js的朋友可以参考下
2009/12/26 Javascript
jQuery EasyUI API 中文文档 搜索框
2011/09/29 Javascript
深入分析js中的constructor和prototype
2012/04/07 Javascript
jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
2013/01/15 Javascript
收集json解析的四种方法分享
2014/01/17 Javascript
JavaScript中string转换成number介绍
2014/12/31 Javascript
cordova入门基础教程及使用中遇到的一些问题总结
2017/11/14 Javascript
基于datepicker定义自己的angular时间组件的示例
2018/03/14 Javascript
vue v-model实现自定义样式多选与单选功能
2018/07/05 Javascript
js与jQuery实现获取table中的数据并拼成json字符串操作示例
2018/07/12 jQuery
vscode配置vue下的es6规范自动格式化详解
2019/03/20 Javascript
详解为element-ui的Select和Cascader添加弹层底部操作按钮
2020/02/07 Javascript
[54:53]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第二场
2014/05/23 DOTA
python 文件操作删除某行的实例
2017/09/04 Python
Python对数据进行插值和下采样的方法
2018/07/03 Python
flask框架jinja2模板与模板继承实例分析
2019/08/01 Python
pytorch 加载(.pth)格式的模型实例
2019/08/20 Python
学习Python列表的基础知识汇总
2020/03/10 Python
python matplotlib实现将图例放在图外
2020/04/17 Python
Python decimal模块使用方法详解
2020/06/08 Python
基于python实现操作redis及消息队列
2020/08/27 Python
python使用正则表达式匹配txt特定字符串(有换行)
2020/12/09 Python
皮姆斯勒语言学习:Pimsleur Language Programs
2018/06/30 全球购物
俄罗斯电子产品、计算机和家用电器购物网站:OLDI
2019/10/27 全球购物
日本AOKI官方商城:AOKI西装
2020/06/11 全球购物
护理学中专毕业生求职信
2013/11/11 职场文书
个人简历中自我评价
2014/02/11 职场文书
员工试用期转正自我评价
2015/03/10 职场文书
教师节简报
2015/07/20 职场文书
小组口号霸气押韵
2015/12/24 职场文书
使用pytorch实现线性回归
2021/04/11 Python