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 正则式使用心得
May 07 Python
一个超级简单的python web程序
Sep 11 Python
python之Character string(实例讲解)
Sep 25 Python
Python实现的十进制小数与二进制小数相互转换功能
Oct 12 Python
详谈python在windows中的文件路径问题
Apr 28 Python
python求最大连续子数组的和
Jul 07 Python
pycharm显示远程图片的实现
Nov 04 Python
用python的turtle模块实现给女票画个小心心
Nov 23 Python
Python完全识别验证码自动登录实例详解
Nov 24 Python
python 实现rolling和apply函数的向下取值操作
Jun 08 Python
OpenCV-Python实现人脸磨皮算法
Jun 07 Python
Python中np.random.randint()参数详解及用法实例
Sep 23 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
用php实现像JSP,ASP里Application那样的全局变量
2007/01/12 PHP
一道关于php变量引用的面试题
2010/08/08 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
2014/06/19 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
2014/07/05 PHP
PHP实现的json类实例
2015/07/28 PHP
laravel 根据不同组织加载不同视图的实现
2019/10/14 PHP
JQUERY复选框CHECKBOX全选,取消全选
2008/08/30 Javascript
js onload处理html页面加载之后的事件
2013/10/30 Javascript
jquery获取点击控件的绝对位置简单实例
2016/10/13 Javascript
jQuery remove()过滤被删除的元素(推荐)
2017/07/18 jQuery
ubuntu编译nodejs所需的软件并安装
2017/09/12 NodeJs
javascript中神奇的 Date对象小结
2017/10/12 Javascript
JavaScript中的一些隐式转换和总结(推荐)
2017/12/22 Javascript
vue中父子组件注意事项,传值及slot应用技巧
2018/05/09 Javascript
详解webpack引用jquery(第三方模块)的三种办法
2019/08/21 jQuery
vue(2.x,3.0)配置跨域代理
2019/11/27 Javascript
一起来了解一下JavaScript的预编译(小结)
2021/03/01 Javascript
Python获取DLL和EXE文件版本号的方法
2015/03/10 Python
matplotlib绘制动画代码示例
2018/01/02 Python
python实现C4.5决策树算法
2018/08/29 Python
python opencv调用笔记本摄像头
2019/08/28 Python
浅谈keras使用中val_acc和acc值不同步的思考
2020/06/18 Python
基于pytorch中的Sequential用法说明
2020/06/24 Python
关于解决iframe标签嵌套问题的解决方法
2020/03/04 HTML / CSS
澳大利高级泳装品牌:Bondi Born
2018/05/23 全球购物
新西兰第一的行李箱网站:luggage.co.nz
2019/07/22 全球购物
澳大利亚礼品篮网站:Macarthur Baskets
2019/10/14 全球购物
添柏岚英国官方网站:Timberland英国
2019/11/28 全球购物
大学生职业生涯规划书模版
2013/12/30 职场文书
酒店营销策划方案
2014/02/07 职场文书
学生周末回家住宿长期请假条
2014/02/15 职场文书
运动会闭幕式解说词
2014/02/21 职场文书
小学语文教师年度考核个人总结
2015/02/05 职场文书
暗恋桃花源观后感
2015/06/12 职场文书
排球赛新闻稿
2015/07/17 职场文书
工作感想范文
2015/08/07 职场文书