Celery基本介绍

在这里插入图片描述

项目开发中经常碰到需要使用异步任务的场景,比如一个WEB请求中有运行时间很长的业务运算,如果不采用异步任务,会阻塞当前的web请求,影响用户体验。

celery是python的一个分布式任务调度模块,由消息中间件broker、任务执行体worker、任务执行结果backend三部分组成。

celery通过消息中间件broker实现消息服务,通常broker使用rabbitMQ,redis等,搭建异步任务系统时需要部署相关的消息服务,比如选择用redis,就需要部署redis-server。

任务执行体worker可以分布式的部署到多个节点,比如多台机器或多个docker中。

任务执行结果backend用于保存任务执行结果,通常使用redis、MongoDB等,仍然需要部署相关的服务。

借助docker我们可以将celery与消息服务集成在一起,提供完整的异步任务执行体。

flower是python的一个专门用于监控celery的模块,比如可以在web页面实时显示celery worker的状态、任务的状态等,最重要的,flower还提供了REST API用于方便第三方应用直接触发任务执行、获取任务执行结果等,这也极大地扩展了celery的应用范围

celery应用举例

  1. Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理,如果你的业务场景中需要用到异步任务,就可以考虑使用celery
  2. 你想对100台机器执行一条批量命令,可能会花很长时间 ,但你不想让你的程序等着结果返回,而是给你返回 一个任务ID, 你过一段时间只需要拿着这个任务id就可以拿到任务执行结果, 在任务执行ing进行时,你可以继续做其它的事情
  3. Celery 在执行任务时需要通过一个消息中间件来接收和发送任务消息,以及存储任务结果, 一般使用rabbitMQ or Redis

Celery有以下优点

1、简单:一单熟悉了celery的工作流程后,配置和使用还是比较简单的

2、高可用:当任务执行失败或执行过程中发生连接中断,celery 会自动尝试重新执行任务

3、快速:一个单进程的celery每分钟可处理上百万个任务

4、灵活: 几乎celery的各个组件都可以被扩展及自定制

Celery基本工作流程图

在这里插入图片描述
      
    user:用户程序,用于告知celery去执行一个任务。
    broker: 存放任务(依赖RabbitMQ或Redis,进行存储)
    worker:执行任务

发布了37 篇原创文章 · 获赞 26 · 访问量 1692

猜你喜欢

转载自blog.csdn.net/weixin_45139342/article/details/104650326
今日推荐