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中计算三角函数之cos()方法的使用简介
May 15 Python
python通过文件头判断文件类型
Oct 30 Python
如何使用Python的Requests包实现模拟登陆
Apr 27 Python
python cs架构实现简单文件传输
Mar 20 Python
Python Subprocess模块原理及实例
Aug 26 Python
Python图像处理库PIL的ImageFont模块使用介绍
Feb 26 Python
解决python执行较大excel文件openpyxl慢问题
May 15 Python
如何理解python面向对象编程
Jun 01 Python
python 实现客户端与服务端的通信
Dec 23 Python
Django中如何用xlwt生成表格的方法步骤
Jan 31 Python
聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明
Mar 03 Python
Python超简单容易上手的画图工具库推荐
May 10 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编程实现计算抽奖概率算法完整实例
2017/08/09 PHP
PHP常用日期加减计算方法实例小结
2018/07/31 PHP
JS打印gridview实现原理及代码
2013/02/05 Javascript
jCallout 轻松实现气泡提示功能
2013/09/22 Javascript
jQuery入门之层次选择器实例简析
2015/12/11 Javascript
BootStrapTable服务器分页实例解析
2016/12/20 Javascript
jQuery展示表格点击变色、全选、删除
2017/01/05 Javascript
基于代数方程库Algebra.js解二元一次方程功能示例
2017/06/09 Javascript
详解vue数据渲染出现闪烁问题
2017/06/29 Javascript
JS按条件 serialize() 对应标签的使用方法
2017/07/24 Javascript
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
2019/03/06 Javascript
简单说说如何使用vue-router插件的方法
2019/04/08 Javascript
[04:52]第二届DOTA2亚洲邀请赛主赛事第一天比赛集锦:OG娜迦海妖放大配合谜团大中3人
2017/04/02 DOTA
Python中装饰器的一个妙用
2015/02/08 Python
Python中动态获取对象的属性和方法的教程
2015/04/09 Python
Python实现线程池代码分享
2015/06/21 Python
Python实现压缩与解压gzip大文件的方法
2016/09/18 Python
python pygame模块编写飞机大战
2018/11/20 Python
详解python使用turtle库来画一朵花
2019/03/21 Python
Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析
2019/12/26 Python
Python如何进行时间处理
2020/08/06 Python
python调用百度AI接口实现人流量统计
2021/02/03 Python
HTML5页面音视频在微信和app下自动播放的实现方法
2016/10/20 HTML / CSS
英国剑桥包官网:The Cambridge Satchel Company
2016/08/01 全球购物
作为网站管理者应当如何防范XSS
2014/08/16 面试题
领导干部培训感言
2014/01/23 职场文书
服装店营销方案
2014/03/10 职场文书
图书室标语
2014/06/21 职场文书
小学教师师德师风自我剖析材料
2014/09/29 职场文书
毕业生政审意见范文
2015/06/04 职场文书
网络舆情信息简报
2015/07/21 职场文书
2016年感恩母亲节活动总结
2016/04/01 职场文书
如何使用vue3打造一个物料库
2021/05/08 Vue.js
mysql分表之后如何平滑上线详解
2021/11/01 MySQL
教你修复 Win11应用商店加载空白问题
2021/12/06 数码科技