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发腾讯微博代码分享
Jan 10 Python
使用Python发送各种形式的邮件的方法汇总
Nov 09 Python
Python实现的微信公众号群发图片与文本消息功能实例详解
Jun 30 Python
Python实现的选择排序算法示例
Nov 29 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
Jan 04 Python
Python面向对象程序设计类的多态用法详解
Apr 12 Python
python多线程+代理池爬取天天基金网、股票数据过程解析
Aug 13 Python
python实现布隆过滤器及原理解析
Dec 08 Python
Python3的unicode编码转换成中文的问题及解决方案
Dec 10 Python
Python非单向递归函数如何返回全部结果
Dec 18 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
Mar 03 Python
python中的sys模块和os模块
Mar 20 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强制更新图片缓存的方法
2015/02/11 PHP
优化WordPress的Google字体以加速国内服务器上的运行
2015/11/24 PHP
PHP多进程编程实例详解
2017/07/19 PHP
PHP操作路由器实现方法示例
2019/04/27 PHP
Javascript注入技巧
2007/06/22 Javascript
Prototype Date对象 学习
2009/07/12 Javascript
[原创]js获取数组任意个不重复的随机数组元素
2010/03/15 Javascript
js 走马灯简单实例
2013/11/21 Javascript
js arguments,jcallee caller用法总结
2013/11/30 Javascript
JavaScript之Object类型介绍
2015/04/01 Javascript
jQuery实现简单的文件上传进度条效果
2020/03/26 Javascript
JavaScript自动点击链接 防止绕过浏览器访问的方法
2017/01/19 Javascript
Angular 4.x+Ionic3踩坑之Ionic 3.x界面传值详解
2018/03/13 Javascript
nodejs aes 加解密实例
2018/10/10 NodeJs
JavaScript 实现继承的几种方式
2021/02/19 Javascript
进一步探究Python的装饰器的运用
2015/05/05 Python
浅谈Python2、Python3相对路径、绝对路径导入方法
2018/06/22 Python
Python编程图形库之Pillow使用方法讲解
2018/12/28 Python
Python中一些深不见底的“坑”
2019/06/12 Python
Python列表嵌套常见坑点及解决方案
2020/09/30 Python
精油和天然健康美容产品:Art Naturals
2018/01/27 全球购物
正宗的日本零食和糖果订阅盒:Bokksu
2019/11/21 全球购物
Tuckernuck官网:经典的美国品质服装、鞋子和配饰
2021/01/11 全球购物
为什么要用EJB
2014/04/17 面试题
体育专业个人的求职信范文
2013/09/21 职场文书
电脑租赁公司创业计划书
2014/01/08 职场文书
小学生班会演讲稿
2014/01/09 职场文书
学生干部学习的自我评价
2014/02/18 职场文书
幼儿园秋季开学寄语
2014/08/02 职场文书
2014年保育员工作总结
2014/12/02 职场文书
2014年学校教学工作总结
2014/12/06 职场文书
教学质量月活动总结
2015/05/11 职场文书
党员观看《筑梦中国》心得体会
2016/01/18 职场文书
python基于tkinter制作下班倒计时工具
2021/04/28 Python
springboot如何初始化执行sql语句
2021/06/22 Java/Android
MySQL一些常用高级SQL语句
2021/07/03 MySQL