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处理csv数据的方法
Mar 11 Python
python fabric实现远程部署
Jan 05 Python
python3中bytes和string之间的互相转换
Feb 09 Python
Python通过Django实现用户注册和邮箱验证功能代码
Dec 11 Python
python2.7安装图文教程
Mar 13 Python
python实现飞机大战游戏
Oct 26 Python
python命令行参数用法实例分析
Jun 25 Python
Python模块 _winreg操作注册表
Feb 05 Python
基于Tensorflow:CPU性能分析
Feb 10 Python
Django关于admin的使用技巧和知识点
Feb 10 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
Feb 27 Python
详解python with 上下文管理器
Sep 02 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
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
2013/04/08 PHP
php中字符串和正则表达式详解
2014/10/23 PHP
PHP图片处理之使用imagecopyresampled函数实现图片缩放例子
2014/11/19 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
javascript+dom树型菜单类,希望朋友们一起进步
2007/05/03 Javascript
js 调整select 位置的函数
2008/02/21 Javascript
ajax无刷新动态调用股票信息(改良版)
2008/11/01 Javascript
javascript 设置某DIV区域内的checkbox复选框
2009/11/30 Javascript
Jquery命名冲突解决的五种方案分享
2012/03/16 Javascript
AngularJS基础 ng-options 指令详解
2016/08/02 Javascript
使用Node.js给图片加水印的方法
2016/11/15 Javascript
使用原生的javascript来实现轮播图
2017/02/24 Javascript
js 索引下标之li集合绑定点击事件
2018/01/12 Javascript
vue 过滤器filter实例详解
2018/03/14 Javascript
浅谈Postman解决token传参的问题
2018/03/31 Javascript
Net微信网页开发 使用微信JS-SDK获取当前地理位置过程详解
2019/08/26 Javascript
vue-router 控制路由权限的实现
2020/09/24 Javascript
angular8.5集成TinyMce5的使用和详细配置(推荐)
2020/11/16 Javascript
Python实例分享:快速查找出被挂马的文件
2014/06/08 Python
Python二维码生成库qrcode安装和使用示例
2014/12/16 Python
Python网络爬虫出现乱码问题的解决方法
2017/01/05 Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
2017/07/06 Python
对pandas处理json数据的方法详解
2019/02/08 Python
Python 串口读写的实现方法
2019/06/12 Python
Python queue队列原理与应用案例分析
2019/09/27 Python
基于Python正确读取资源文件
2020/09/14 Python
简单了解Python字典copy与赋值的区别
2020/09/16 Python
WINDOWS域的具体实现方式是什么
2014/02/20 面试题
《只有一个地球》教学反思
2014/02/14 职场文书
《小小竹排画中游》教学反思
2014/02/26 职场文书
销售顾问工作计划书
2014/09/15 职场文书
组织生活会发言材料
2014/12/15 职场文书
教师考核评语大全
2014/12/31 职场文书
跑出一片天观后感
2015/06/08 职场文书
幽默导游词应该怎么写?
2019/08/26 职场文书
基于JavaScript实现年月日三级联动
2021/06/22 Javascript