Celery 使用(一)

架构

  1. Producer:任务发布者;
  2. Celery Beat:任务调度器,Beat进程会读取配置文件中的内容,周期性的将配置中到期需要执行的任务发送给任务队列;
  3. Broker:消息代理,接受生产者的任务消息,存进队列后发送给消费者;
  4. Celery Worker:执行任务的消费者;
  5. 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有何用呢?

从我搜索到的知识来看,有以下几点:

  1. Celery可以支持多种消息代理,不仅仅是RabbitMQ,还有Redis、MongoDB等等;
  2. RabbitMQ是消息队列,其可以应用到各种场景中,包括任务分发系统,也就是需要自己实现一个Celery,而Celery本身就是一个任务分发系统,显然简化了代码,不需要重复造轮子;

转载于:https://www.cnblogs.com/George1994/p/7385335.html

Celery 使用(一)相关推荐

  1. python定时任务contrib_django+celery配置(定时任务+循环任务)

    下面介绍一下django+celery的配置做定时任务 1.首先介绍一下环境和版本 python==2.7 django == 1.8.1 celery == 3.1.23 django-celery ...

  2. django中使用celery简单介绍

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 本章节我们重点在于实现,如何存储任务的结果. 我们将任务函数改为: from celery_demo.celery im ...

  3. python celery

    celery 一般用于做异步 和定时任务 不过听网上说 celery 坑还是蛮多的,特别定时任务,我们一般用来做定时任务,还有数据导入导出. celery 不支持 redis cluster 集群模式 ...

  4. celery源码分析-定时任务

    celery源码分析 本文环境python3.5.2,celery4.0.2,django1.10.x系列 celery的定时任务与Django配置 celery也可以执行定时任务来执行相关操作,ce ...

  5. celery源码分析-Task的初始化与发送任务

    celery源码分析 本文环境python3.5.2,celery4.0.2,django1.10.x系列 celery的任务发送 在Django项目中使用了装饰器来包装待执行任务, from cel ...

  6. celery源码分析-worker初始化分析(下)

    celery源码分析 本文环境python3.5.2,celery4.0.2,django1.10.x系列 celery的worker启动 在上文中分析到了Hub类的初始化,接下来继续分析Pool类的 ...

  7. celery源码分析-wroker初始化分析(上)

    celery源码分析 本文环境python3.5.2,celery4.0.2,django1.10.x系列 celery与Django的配合使用 首先,在安装有django的环境中创建一个django ...

  8. celery源码分析:multi命令分析

    celery源码分析 本文环境python3.5.2,celery4.0.2,django1.10.x系列 celery简介 celery是一款异步任务框架,基于AMQP协议的任务调度框架.使用的场景 ...

  9. django-celery中配置celery中的日志

    django-celery中配置celery中的日志 django配置文件中的logging只是针对django中的views.API起作用,对celery不起作用,也就是说celery不能使用dja ...

  10. celery任务:Tasks(一)

    celery任务:Tasks 任务是构建 Celery 应用程序的组成模块. 任务是从任何可调用创建的类,它有两种角色,一种角色定义了调用任务时发生的事情(发送消息),另外一种角色为职程(Worker ...

最新文章

  1. 【笔记】重学前端-winter
  2. 全国大学生电工数学建模竞赛赛题_A
  3. 【2021云边协同大会】阿里云周哲畅聊边缘云基础设施创新发展及场景化实践
  4. csv 字符串_python3从零学习-5.5.1、CSV 文件读写
  5. php 常用编译参数,php编译参数,不用怕!!
  6. Win8 64位安装Oracle 11g时错
  7. 浅谈SmartImageView
  8. 【新知实验室】TRTC这么简单的demo快来试试吧
  9. 以后给孩子起名字不用发愁了
  10. 全网最新 java 开发 OPC 实现 DA 通讯控制点位 西门子
  11. 2021高考成绩排名查询河北,河北高考排名查询方法,2021年河北高考成绩位次全省排名查询...
  12. 这一招可以让pdf整篇自动翻译,pdf翻译的方法分享
  13. Android性能优化之解密ZAKER,网易云阅读等新闻应用的内容缓存加载方式
  14. Java坚挺 PHP要完?TIOBE最新榜单公布
  15. torch.cumsum() 和 torch.cumprod()
  16. H.265/HEVC 简述 第二课(数字视频格式)
  17. 【云计算】高举生态大旗,用友云2018能否实现业务加速?
  18. 给企业划分子网(子网划分)
  19. 搞一下 AP AUTOSAR 原理及实战 | 01 AP AUTOSAR 设计思想及原理
  20. Java Date时间转换

热门文章

  1. C++析构器详解【C++析构器】
  2. java同步机制简单介绍
  3. 手机linux内核下载,Linux Kernel
  4. python type help copyright_Python关于import的实验(8)__init__.py文件内部代码的执行以及内部的导入和内部的变量...
  5. android build获取ext,android – 如何在Gradle中获取当前构建类型
  6. 运维基础(6)CI / CD
  7. 基于 RocketMQ 的基金数字化陪伴体系的架构实践
  8. 调整注释_解读!加工贸易禁止类目录调整
  9. qt5 linux 控制台 乱码,qt5.12 解决显示中文乱码问题
  10. 文字居中 qt_Qt编写自定义控件11-设备防区按钮控件