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实现自动重启本程序的方法
Jul 09 Python
python类:class创建、数据方法属性及访问控制详解
Jul 25 Python
Python中的探索性数据分析(功能式)
Dec 22 Python
Python基础之函数的定义与使用示例
Mar 23 Python
python,Django实现的淘宝客登录功能示例
Jun 12 Python
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
Jun 21 Python
PyQT5 QTableView显示绑定数据的实例详解
Jun 25 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
Jun 28 Python
python交互模式下输入换行/输入多行命令的方法
Jul 02 Python
对python中基于tcp协议的通信(数据传输)实例讲解
Jul 22 Python
Python IDE Pycharm中的快捷键列表用法
Aug 08 Python
Django自带的加密算法及加密模块详解
Dec 03 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 将bmp图片转为jpg等其他任意格式的图片
2009/06/21 PHP
实例讲解PHP设计模式编程中的简单工厂模式
2016/02/29 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
2016/10/25 PHP
推荐40个非常优秀的jQuery插件和教程【系列三】
2011/11/09 Javascript
JavaScript计算两个日期时间段内日期的方法
2015/03/16 Javascript
javascript中html字符串转化为jquery dom对象的方法
2015/08/27 Javascript
基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
2016/02/22 Javascript
vue.js中$watch的用法示例
2016/10/04 Javascript
简单实现node.js图片上传
2016/12/18 Javascript
js实现移动端导航点击自动滑动效果
2017/07/18 Javascript
原生JS+Canvas实现五子棋游戏
2020/05/28 Javascript
js实现省市级联效果分享
2017/08/10 Javascript
vue 文件目录结构详解
2017/11/24 Javascript
vue中使用[provide/inject]实现页面reload的方法
2019/09/30 Javascript
jquery实现有过渡效果的tab切换
2020/07/17 jQuery
[50:11]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第三场
2018/04/09 DOTA
获取python文件扩展名和文件名方法
2018/02/02 Python
Python+OpenCV实现实时眼动追踪的示例代码
2019/11/11 Python
python 统计list中各个元素出现的次数的几种方法
2021/02/20 Python
美国在线健康和美容市场:Pharmapacks
2018/12/05 全球购物
美国购买体育赛事门票网站:TicketCity
2019/03/06 全球购物
请写出 BOOL flag 与"零值"比较的 if 语句
2016/02/29 面试题
奶茶专卖店创业计划书
2014/01/18 职场文书
优秀医生事迹材料
2014/02/12 职场文书
2014村务公开实施方案
2014/02/25 职场文书
大学生村官考核材料
2014/05/23 职场文书
2015高三毕业寄语赠言
2015/02/27 职场文书
2015年学生会部门工作总结
2015/04/21 职场文书
工作调动申请报告
2015/05/18 职场文书
赡养老人协议书范本
2015/08/06 职场文书
法律服务所工作总结
2015/08/10 职场文书
WordPress多语言翻译插件 - WPML使用教程
2021/04/01 PHP
Ajax是什么?Ajax高级用法之Axios技术
2021/04/21 Javascript
解决pytorch 损失函数中输入输出不匹配的问题
2021/06/05 Python
MySQL系列之九 mysql查询缓存及索引
2021/07/02 MySQL
简单聊一聊SQL注入及防止SQL注入
2022/03/23 MySQL