Celery 使用(一)
Celery 使用(一)
架构
- Producer:任务发布者;
- Celery Beat:任务调度器,Beat进程会读取配置文件中的内容,周期性的将配置中到期需要执行的任务发送给任务队列;
- Broker:消息代理,接受生产者的任务消息,存进队列后发送给消费者;
- Celery Worker:执行任务的消费者;
- Result Backend:保存消费者执行任务完后的结果;
如下图:
整体的流程,任务发布者或者是任务调度,将任务发送到消息代理中,接着消息代理将任务发送给消费者来执行,其执行完后将结果保存到backend中。
使用
先创建Celery实例和相关的任务,这里配置Celery可以通过创建一个配置文件,然后通过app.config_from_object('proj.celeryconfig')
加载即可。
task.py如下
from celery import Celery app = Celery('tasks', backend='amqp', broker='amqp://guest@localhost:5672//') @app.task def add(x, y):return x + y
接下来,创建相关的任务发布者,run_task.py如下
from task2 import add result = add.delay(1,1) import time while not result.ready():print('not yet ready')time.sleep(1) print(result.get())
然后在项目目录中,通过命令执行Celery,命令如下:
celery -A task2.app worker --loglevel=info
如果看到命令行里显示该实例的所有任务说明执行成功,最后再开一个进程执行任务,接着就会看到命令行中的提示信息,说明消费者执行成功,并且将结果保存到backend中。
一个简单的用例就结束了。
疑惑
之前有一个疑惑的点在于,既然RabbitMQ可以实现任务队列,要Celery有何用呢?
从我搜索到的知识来看,有以下几点:
- Celery可以支持多种消息代理,不仅仅是RabbitMQ,还有Redis、MongoDB等等;
- RabbitMQ是消息队列,其可以应用到各种场景中,包括任务分发系统,也就是需要自己实现一个Celery,而Celery本身就是一个任务分发系统,显然简化了代码,不需要重复造轮子;
转载于:https://www.cnblogs.com/George1994/p/7385335.html
Celery 使用(一)相关推荐
- python定时任务contrib_django+celery配置(定时任务+循环任务)
下面介绍一下django+celery的配置做定时任务 1.首先介绍一下环境和版本 python==2.7 django == 1.8.1 celery == 3.1.23 django-celery ...
- django中使用celery简单介绍
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 本章节我们重点在于实现,如何存储任务的结果. 我们将任务函数改为: from celery_demo.celery im ...
- python celery
celery 一般用于做异步 和定时任务 不过听网上说 celery 坑还是蛮多的,特别定时任务,我们一般用来做定时任务,还有数据导入导出. celery 不支持 redis cluster 集群模式 ...
- celery源码分析-定时任务
celery源码分析 本文环境python3.5.2,celery4.0.2,django1.10.x系列 celery的定时任务与Django配置 celery也可以执行定时任务来执行相关操作,ce ...
- celery源码分析-Task的初始化与发送任务
celery源码分析 本文环境python3.5.2,celery4.0.2,django1.10.x系列 celery的任务发送 在Django项目中使用了装饰器来包装待执行任务, from cel ...
- celery源码分析-worker初始化分析(下)
celery源码分析 本文环境python3.5.2,celery4.0.2,django1.10.x系列 celery的worker启动 在上文中分析到了Hub类的初始化,接下来继续分析Pool类的 ...
- celery源码分析-wroker初始化分析(上)
celery源码分析 本文环境python3.5.2,celery4.0.2,django1.10.x系列 celery与Django的配合使用 首先,在安装有django的环境中创建一个django ...
- celery源码分析:multi命令分析
celery源码分析 本文环境python3.5.2,celery4.0.2,django1.10.x系列 celery简介 celery是一款异步任务框架,基于AMQP协议的任务调度框架.使用的场景 ...
- django-celery中配置celery中的日志
django-celery中配置celery中的日志 django配置文件中的logging只是针对django中的views.API起作用,对celery不起作用,也就是说celery不能使用dja ...
- celery任务:Tasks(一)
celery任务:Tasks 任务是构建 Celery 应用程序的组成模块. 任务是从任何可调用创建的类,它有两种角色,一种角色定义了调用任务时发生的事情(发送消息),另外一种角色为职程(Worker ...
最新文章
- 【笔记】重学前端-winter
- 全国大学生电工数学建模竞赛赛题_A
- 【2021云边协同大会】阿里云周哲畅聊边缘云基础设施创新发展及场景化实践
- csv 字符串_python3从零学习-5.5.1、CSV 文件读写
- php 常用编译参数,php编译参数,不用怕!!
- Win8 64位安装Oracle 11g时错
- 浅谈SmartImageView
- 【新知实验室】TRTC这么简单的demo快来试试吧
- 以后给孩子起名字不用发愁了
- 全网最新 java 开发 OPC 实现 DA 通讯控制点位 西门子
- 2021高考成绩排名查询河北,河北高考排名查询方法,2021年河北高考成绩位次全省排名查询...
- 这一招可以让pdf整篇自动翻译,pdf翻译的方法分享
- Android性能优化之解密ZAKER,网易云阅读等新闻应用的内容缓存加载方式
- Java坚挺 PHP要完?TIOBE最新榜单公布
- torch.cumsum() 和 torch.cumprod()
- H.265/HEVC 简述 第二课(数字视频格式)
- 【云计算】高举生态大旗,用友云2018能否实现业务加速?
- 给企业划分子网(子网划分)
- 搞一下 AP AUTOSAR 原理及实战 | 01 AP AUTOSAR 设计思想及原理
- Java Date时间转换
热门文章
- C++析构器详解【C++析构器】
- java同步机制简单介绍
- 手机linux内核下载,Linux Kernel
- python type help copyright_Python关于import的实验(8)__init__.py文件内部代码的执行以及内部的导入和内部的变量...
- android build获取ext,android – 如何在Gradle中获取当前构建类型
- 运维基础(6)CI / CD
- 基于 RocketMQ 的基金数字化陪伴体系的架构实践
- 调整注释_解读!加工贸易禁止类目录调整
- qt5 linux 控制台 乱码,qt5.12 解决显示中文乱码问题
- 文字居中 qt_Qt编写自定义控件11-设备防区按钮控件