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 多进程通信模块的简单实现
Feb 20 Python
Python中__new__与__init__方法的区别详解
May 04 Python
Python开发如何在ubuntu 15.10 上配置vim
Jan 25 Python
Ubuntu下安装PyV8
Mar 13 Python
Python3学习笔记之列表方法示例详解
Oct 06 Python
Django项目中model的数据处理以及页面交互方法
May 30 Python
python 内置函数汇总详解
Sep 16 Python
python3.7 openpyxl 删除指定一列或者一行的代码
Oct 08 Python
详解Python time库的使用
Oct 10 Python
python 实现图片上传接口开发 并生成可以访问的图片url
Dec 18 Python
详解python破解zip文件密码的方法
Jan 13 Python
python中实现词云图的示例
Dec 19 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
header()函数使用说明
2006/11/23 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
2011/05/09 PHP
如何判断php数组的维度
2013/06/10 PHP
PHP实现微信公众平台音乐点播
2014/03/20 PHP
PHP连续签到功能实现方法详解
2019/12/04 PHP
PHP代码覆盖率统计详解
2020/07/22 PHP
JQuery中SetTimeOut传参问题探讨
2013/05/10 Javascript
用JavaScript实现动画效果的方法
2013/07/20 Javascript
Iframe 自动适应页面的高度示例代码
2014/02/26 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
2014/06/06 Javascript
JavaScript提高网站性能优化的建议(二)
2016/07/24 Javascript
jquery 动态增加,减少input表单的简单方法(必看)
2016/10/12 Javascript
关于jQuery库冲突的完美解决办法
2017/05/20 jQuery
js图片放大镜实例讲解(必看篇)
2017/07/17 Javascript
简易Vue评论框架的实现(父组件的实现)
2018/01/08 Javascript
通过jquery.cookie.js实现记住用户名、密码登录功能
2018/06/20 jQuery
vue.js 图片上传并预览及图片更换功能的实现代码
2018/08/27 Javascript
微信小程序 腾讯地图显示偏差问题解决
2019/07/27 Javascript
pageGroup.js实现分页功能
2019/07/27 Javascript
微信小程序实现打开并下载服务器上面的pdf文件到手机
2019/09/20 Javascript
vue data恢复初始化数据的实现方法
2019/10/31 Javascript
解决vue+elementui项目打包后样式变化问题
2020/08/03 Javascript
Python生成密码库功能示例
2017/05/23 Python
Python 网络爬虫--关于简单的模拟登录实例讲解
2018/06/01 Python
python 3.6.5 安装配置方法图文教程
2018/09/18 Python
使用Python轻松完成垃圾分类(基于图像识别)
2019/07/09 Python
详细介绍pandas的DataFrame的append方法使用
2019/07/31 Python
如何在django中添加日志功能
2020/02/06 Python
编写python代码实现简单抽奖器
2020/10/20 Python
python调用win32接口进行截图的示例
2020/11/11 Python
农业生产宣传标语
2014/10/08 职场文书
情人节活动总结范文
2015/02/05 职场文书
求职简历自我评价2015
2015/03/10 职场文书
趣味运动会加油词
2015/07/18 职场文书
运动会通讯稿100字
2015/07/20 职场文书
Python如何配置环境变量详解
2021/05/18 Python