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中threading超线程用法实例分析
May 16 Python
Python模拟百度登录实例详解
Jan 20 Python
Python3实现发送QQ邮件功能(文本)
Dec 15 Python
Python 25行代码实现的RSA算法详解
Apr 10 Python
python创建文件备份的脚本
Sep 11 Python
Python简单获取二维数组行列数的方法示例
Dec 21 Python
python列表,字典,元组简单用法示例
Jul 11 Python
Django项目使用CircleCI的方法示例
Jul 14 Python
解决ROC曲线画出来只有一个点的问题
Feb 28 Python
在jupyter notebook 添加 conda 环境的操作详解
Apr 10 Python
Python3合并两个有序数组代码实例
Aug 11 Python
Python中相见恨晚的技巧
Apr 13 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
非常不错的MySQL优化的8条经验
2008/03/24 PHP
详解php的socket通信
2015/08/11 PHP
JavaScript显示当然日期和时间即年月日星期和时间
2013/10/29 Javascript
jquery中push()的用法(数组添加元素)
2014/11/25 Javascript
再谈JavaScript线程
2015/07/10 Javascript
jquery插件pagination实现无刷新ajax分页
2015/09/30 Javascript
跟我学习javascript的异步脚本加载
2015/11/20 Javascript
jQuery 自定义下拉框(DropDown)附源码下载
2016/07/22 Javascript
js入门之Function函数的使用方法【新手必看】
2016/11/22 Javascript
整理关于Bootstrap警示框的慕课笔记
2017/03/29 Javascript
javascript 判断用户有没有操作页面
2017/10/17 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
Vuejs+vue-router打包+Nginx配置的实例
2018/09/20 Javascript
node crawler如何添加promise支持
2020/02/01 Javascript
django框架面向对象ORM模型继承用法实例分析
2019/07/29 Python
pytorch sampler对数据进行采样的实现
2019/12/31 Python
Python基于进程池实现多进程过程解析
2020/04/30 Python
西班牙汉普顿小姐:购买帆布鞋和太阳镜
2016/10/23 全球购物
英国内衣连锁店:Boux Avenue
2018/01/24 全球购物
Revolution Beauty美国官网:英国知名化妆品网站
2018/07/23 全球购物
澳大利亚珍珠首饰购物网站:Vayo Pearls
2019/03/11 全球购物
捷克移动配件网上商店:ProMobily.cz
2019/03/15 全球购物
JD Sports西班牙:英国领先的运动服装公司
2020/01/06 全球购物
介绍一下Cookie和Session及他们之间的区别
2012/11/20 面试题
应届生会计求职信
2013/11/11 职场文书
商务邀请函范文
2014/01/14 职场文书
写自荐信三大法宝
2014/01/24 职场文书
党的群众路线教育实践活动宣传方案
2014/02/23 职场文书
2014基层党员干部学习全国两会心得体会
2014/03/17 职场文书
校园绿化美化方案
2014/06/08 职场文书
篮球兴趣小组活动总结
2014/07/07 职场文书
商场租赁意向书
2014/07/30 职场文书
廉洁自律证明
2015/06/24 职场文书
高效课堂教学反思
2016/02/24 职场文书
创业计划书之珠宝饰品
2019/08/26 职场文书
公司财务制度:成本管理控制制度模板
2019/11/19 职场文书