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 相关文章推荐
linux系统使用python获取内存使用信息脚本分享
Jan 15 Python
python使用socket连接远程服务器的方法
Apr 29 Python
Python编程中运用闭包时所需要注意的一些地方
May 02 Python
Python闭包函数定义与用法分析
Jul 20 Python
在ubuntu16.04中将python3设置为默认的命令写法
Oct 31 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
Feb 26 Python
pyinstaller打包单个exe后无法执行错误的解决方法
Jun 21 Python
Python3实现二叉树的最大深度
Sep 30 Python
python实现坦克大战
Apr 24 Python
django为Form生成的label标签添加class方式
May 20 Python
Python reques接口测试框架实现代码
Jul 28 Python
LyScript实现绕过反调试保护的示例详解
Aug 14 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
分页显示Oracle数据库记录的类之二
2006/10/09 PHP
php查看session内容的函数
2008/08/27 PHP
PHP中的Streams详细介绍
2014/11/12 PHP
jQuery Div中加载其他页面的实现代码
2009/02/27 Javascript
Mootools 1.2教程 排序类和方法简介
2009/09/15 Javascript
jQuery 幻灯片插件(带缩略图功能)
2011/01/24 Javascript
Jquery中对数组的操作代码
2011/08/12 Javascript
简约JS日历控件 实例代码
2013/07/12 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
2013/08/01 Javascript
jQuery 删除或是清空某个HTML元素示例
2014/08/04 Javascript
Ajax局部更新导致JS事件重复触发问题的解决方法
2014/10/14 Javascript
jQuery实现Twitter的自动文字补齐特效
2014/11/28 Javascript
15个jquery常用方法、小技巧分享
2015/01/13 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
vue多级多选菜单组件开发
2020/09/08 Javascript
迅速了解一下ES10中Object.fromEntries的用法使用
2019/03/05 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
2019/07/05 Javascript
在vue中高德地图引入和轨迹的绘制的实现
2019/10/11 Javascript
小程序自定义模板实现吸顶功能
2020/01/08 Javascript
基于vue.js实现购物车
2020/01/15 Javascript
使用python实现baidu hi自动登录的代码
2013/02/10 Python
Python数据分析之获取双色球历史信息的方法示例
2018/02/03 Python
Python FTP两个文件夹间的同步实例代码
2018/05/25 Python
Python设计模式之代理模式实例详解
2019/01/19 Python
Python3中的bytes和str类型详解
2019/05/02 Python
Python面向对象编程基础实例分析
2020/01/17 Python
对tensorflow 中tile函数的使用详解
2020/02/07 Python
Python3运算符常见用法分析
2020/02/14 Python
CSS3实现大小不一的粒子旋转加载动画
2016/04/21 HTML / CSS
详解html5 canvas常用api总结(二)--绘图API
2016/12/14 HTML / CSS
英国知名奢侈品包包品牌:Milli Millu
2016/12/22 全球购物
歌颂祖国演讲稿
2014/05/04 职场文书
计算机应用专业毕业生求职信
2014/06/03 职场文书
空气环保标语
2014/06/12 职场文书
暑期学习心得体会
2014/09/02 职场文书
外国人来华邀请函
2015/01/31 职场文书