celery介绍

发布时间 2023-06-29 16:08:44作者: 树苗叶子

简介

Celery 是使用 python 编写的分布式任务调度框架。

celery能做什么

Celery 是一个强大的分布式任务队列框架,它可以与 Python 应用程序一起使用,提供了异步任务处理和分布式消息传递的能力。以下是 Celery 框架的一些主要功能和用途:

  • 异步任务处理
    Celery 可以将耗时的任务放入消息队列中进行异步处理,以便不阻塞主应用程序的执行。这对于处理大量请求或需要长时间运行的任务非常有用,如发送电子邮件、生成报告、图像处理等。

  • 周期性任务调度
    Celery 提供了定时任务调度的功能,允许您以指定的时间间隔执行任务。这对于需要定期执行的后台任务非常有用,如数据备份、定期清理操作等。

  • 分布式任务处理
    Celery 支持在多个工作节点上分发和处理任务,从而实现分布式的任务执行。这使得您可以将任务分配给空闲的工作节点,实现负载均衡和横向扩展。

  • 异常处理和重试
    Celery 提供了强大的异常处理和重试机制,能够自动捕获任务执行过程中的异常,并根据配置进行重试,以增加任务的执行可靠性。

  • 结果存储和追踪
    Celery 可以将任务的执行结果存储在配置的后端(如数据库、缓存、消息队列等),以便您可以轻松地追踪和获取任务的执行结果。

  • 链式任务和并行任务
    Celery 支持将多个任务链接在一起形成任务链,使得任务能够按照指定的顺序执行。同时,Celery 也支持并行执行多个任务,以加快任务的处理速度。

主要概念

  • celery 应用

    • 用户编写的代码脚本,用来定义要执行的任务,然后通过 broker 将任务发送到消息队列中
  • broker

    • 代理,通过消息队列在客户端和 worker 之间进行协调。
    • celery 本身并不包含消息队列,它支持一下消息队列RabbitMQRdisAmazon SQSZookeeper
    • 更多关于 Broker 见官方文档
  • worker

    • 工人,用来执行 broker 分派的任务。
  • backend

    • 数据库,用来存储任务返回的结果。
  • 任务

    • 任务,定义的需要执行的任务

celery架构

Celery的架构由三部分组成,消息中间件(message broker),任务执行单元(worker)和任务执行结果存储(task result store)组成。

  • 消息中间件
    Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成,包括, RabbitMQ, Redis, MongoDB等...

  • 任务执行单元
    Worker是Celery提供的任务执行的单元,worker并发的运行在分布式的系统节点中

  • 任务结果存储
    Task result store用来存储Worker执行的任务的结果,Celery支持以不同方式存储任务的结果,包括Redis,MongoDB,Django ORM,AMQP等,这里我先不去看它是如何存储的,就先选用Redis来存储任务执行结果。