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中time()方法的使用的教程
May 22 Python
python中装饰器级连的使用方法示例
Sep 29 Python
对json字符串与python字符串的不同之处详解
Dec 19 Python
python3.6根据m3u8下载mp4视频
Jun 17 Python
python cumsum函数的具体使用
Jul 29 Python
PYTHON如何读取和写入EXCEL里面的数据
Oct 28 Python
python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法
Feb 26 Python
pycharm解决关闭flask后依旧可以访问服务的问题
Apr 03 Python
python上传时包含boundary时的解决方法
Apr 08 Python
推荐值得学习的12款python-web开发框架
Aug 10 Python
Python爬虫数据的分类及json数据使用小结
Mar 29 Python
Elasticsearch 索引操作和增删改查
Apr 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
php 解决substr()截取中文字符乱码问题
2016/07/18 PHP
php+redis在实际项目中HTTP 500: Internal Server Error故障排除
2017/02/05 PHP
PHP实现的文件上传类与用法详解
2017/07/05 PHP
js DOM 元素ID就是全局变量
2012/09/20 Javascript
javascript仿php的print_r函数输出json数据
2013/09/13 Javascript
js判断浏览器类型为ie6时不执行
2014/06/15 Javascript
2014 年最热门的21款JavaScript框架推荐
2014/12/25 Javascript
javascript实现的固定位置悬浮窗口实例
2015/04/30 Javascript
JavaScript实现弹出广告功能
2017/03/30 Javascript
浅谈Node.js 子进程与应用场景
2018/01/24 Javascript
js中this的指向问题归纳总结
2018/11/28 Javascript
详解Vue源码学习之双向绑定
2019/04/10 Javascript
python中的计时器timeit的使用方法
2017/10/20 Python
Django的分页器实例(paginator)
2017/12/01 Python
python如何派生内置不可变类型并修改实例化行为
2018/03/21 Python
python实现决策树ID3算法的示例代码
2018/05/30 Python
Python模拟登录的多种方法(四种)
2018/06/01 Python
python检测主机的连通性并记录到文件的实例
2018/06/21 Python
python 使用 requests 模块发送http请求 的方法
2018/12/09 Python
python实现浪漫的烟花秀
2019/01/30 Python
python 日期排序的实例代码
2019/07/11 Python
浅谈Pytorch中的torch.gather函数的含义
2019/08/18 Python
pip install 使用国内镜像的方法示例
2020/04/03 Python
英国最大线上综合鞋类商城:Office
2017/12/08 全球购物
澳大利亚在线生活方式商店:Mytopia
2018/07/08 全球购物
大专自我鉴定范文
2013/10/23 职场文书
乌鸦喝水教学反思
2014/02/07 职场文书
知识竞赛活动方案
2014/02/18 职场文书
职工代表大会主持词
2014/04/01 职场文书
商场促销活动策划方案
2014/08/18 职场文书
公共场所禁烟倡议书
2014/08/30 职场文书
网吧七夕活动策划方案
2014/08/31 职场文书
2014年个人业务工作总结
2014/11/17 职场文书
2015年教师节贺卡寄语
2015/03/24 职场文书
幼儿园大班教育随笔
2015/08/14 职场文书
2016三八妇女节慰问信
2015/11/30 职场文书