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实现二维有序数组查找的方法
Apr 27 Python
python绘制铅球的运行轨迹代码分享
Nov 14 Python
pandas 对series和dataframe进行排序的实例
Jun 09 Python
python实现简易内存监控
Jun 21 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
Feb 27 Python
python 实现返回一个列表中出现次数最多的元素方法
Jun 11 Python
利用Python复制文件的9种方法总结
Sep 02 Python
pytorch 状态字典:state_dict使用详解
Jan 17 Python
python 实现两个线程交替执行
May 02 Python
序列化Python对象的方法
Aug 01 Python
python用opencv 图像傅里叶变换
Jan 04 Python
Django与数据库交互的实现
Jun 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 数组遍历顺序理解
2009/09/09 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
2011/10/31 PHP
php多文件上传下载示例分享
2014/02/20 PHP
php实现的通用图片处理类
2015/03/24 PHP
基于JQuery+PHP编写砸金蛋中奖程序
2015/09/08 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
2017/02/15 PHP
js将当前时间格式转换成时间搓(自写)
2013/09/26 Javascript
jquery序列化form表单使用ajax提交后处理返回的json数据
2014/03/03 Javascript
js获得网页背景色和字体色的方法
2014/03/21 Javascript
js实现简单的购物车有图有代码
2014/05/26 Javascript
基于JavaScript实现百叶窗动画效果不只单纯flas可以实现
2016/02/29 Javascript
在Html中使用Requirejs进行模块化开发实例详解
2016/04/15 Javascript
jQuery插件DataTables分页开发心得体会
2017/08/22 jQuery
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
JS实现获取word文档内容并输出显示到html页面示例
2018/06/23 Javascript
浅谈微信页面入口文件被缓存解决方案
2018/09/29 Javascript
小程序的上传文件接口的注意要点解析
2019/09/17 Javascript
react使用CSS实现react动画功能示例
2020/05/18 Javascript
Vue 3.0中jsx语法的使用
2020/11/13 Javascript
JavaScript实现网页跨年倒计时
2020/12/02 Javascript
vue实现两个区域滚动条同步滚动
2020/12/13 Vue.js
[00:49]完美世界DOTA2联赛10月28日开团时刻:随便打
2020/10/29 DOTA
python smtplib模块发送SSL/TLS安全邮件实例
2015/04/08 Python
利用标准库fractions模块让Python支持分数类型的方法详解
2017/08/11 Python
wxPython电子表格功能wx.grid实例教程
2019/11/19 Python
keras在构建LSTM模型时对变长序列的处理操作
2020/06/29 Python
Python调用jar包方法实现过程解析
2020/08/11 Python
Html5导航栏吸顶方案原理与对比实现
2020/06/10 HTML / CSS
招聘与培训专员岗位职责
2014/01/30 职场文书
贷款承诺书范文
2014/05/19 职场文书
社区活动策划方案
2014/08/21 职场文书
2015年挂职锻炼工作总结
2014/12/12 职场文书
运动会5000米加油稿
2015/07/21 职场文书
基于JavaScript实现年月日三级联动
2021/06/22 Javascript
springBoot基于webSocket实现扫码登录
2021/06/22 Java/Android
Python使用psutil库对系统数据进行采集监控的方法
2021/08/23 Python