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中还原JavaScript的escape函数编码后字符串的方法
Aug 22 Python
Python HTMLParser模块解析html获取url实例
Apr 08 Python
详解Django框架中用context来解析模板的方法
Jul 20 Python
python基础教程项目五之虚拟茶话会
Apr 02 Python
numpy中的高维数组转置实例
Apr 17 Python
使用Python做垃圾分类的原理及实例代码附源码
Jul 02 Python
python实现人工智能Ai抠图功能
Sep 05 Python
使用python自动追踪你的快递(物流推送邮箱)
Mar 17 Python
Python pandas如何向excel添加数据
May 22 Python
Python如何对XML 解析
Jun 28 Python
Python TestSuite生成测试报告过程解析
Jul 23 Python
PyChon中关于Jekins的详细安装(推荐)
Dec 28 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与java通过socket通信的实现代码
2013/10/21 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
2016/03/21 PHP
php+Ajax无刷新验证用户名操作实例详解
2019/03/04 PHP
php 函数中静态变量使用的问题实例分析
2020/03/05 PHP
使用Apache的rewrite
2021/03/09 Servers
URI、URL和URN之间的区别与联系
2006/12/20 Javascript
jquery方法+js一般方法+js面向对象方法实现拖拽效果
2012/08/30 Javascript
jQuery判断密码强度实现思路及代码
2013/04/24 Javascript
解析dom中的children对象数组元素firstChild,lastChild的使用
2013/07/10 Javascript
jQuery中mouseover事件用法实例
2014/12/26 Javascript
jquery广告无缝轮播实例
2017/01/05 Javascript
JavaScript数据结构中串的表示与应用实例
2017/04/12 Javascript
Three.js实现绘制字体模型示例代码
2017/09/26 Javascript
jQuery实现上下滚动公告栏详细代码
2018/11/21 jQuery
解决一个微信号同时支持多个环境网页授权问题
2019/08/07 Javascript
在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法
2019/09/10 Javascript
jquery弹窗时禁止body滚动条滚动的例子
2019/09/21 jQuery
详解JavaScript 异步编程
2020/07/13 Javascript
[01:02]DOTA2辉夜杯决赛日 CDEC.Y对阵VG赛前花絮
2015/12/27 DOTA
[35:29]Secret vs VG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
pygame学习笔记(3):运动速率、时间、事件、文字
2015/04/15 Python
python实现单线程多任务非阻塞TCP服务端
2017/06/13 Python
Pytorch入门之mnist分类实例
2018/04/14 Python
python之信息加密题目详解
2019/06/26 Python
python实现井字棋小游戏
2020/03/04 Python
Ajax请求总共有多少种Callback
2016/07/17 面试题
项目资料员岗位职责
2013/12/10 职场文书
小学学习雷锋活动总结
2014/07/03 职场文书
平面设计专业求职信
2014/08/09 职场文书
青年标兵事迹材料
2014/08/16 职场文书
励志广播稿300字(5篇)
2014/09/15 职场文书
学生会干部自我鉴定2014
2014/09/18 职场文书
教师培训学习心得体会
2016/01/21 职场文书
适合青年人白手起家的创业项目分享
2019/08/16 职场文书
如何在Mac上通过docker配置PHP开发环境
2021/05/29 PHP
为Centos安装指定版本的Docker
2022/04/01 Servers