celery——分布式任务队列服务

Celery是一款用Python编写的分布式任务队列,适用于实时处理和任务调度。本文介绍Celery的组件,如任务调度器CeleryBeat、消息中间件Broker、任务执行单元Worker及结果储存Backend。同时,讲解Celery的工作流程,从任务模块Task到消息队列的管理与监控,以及如何使用delay()或apply_async()方法调度任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 什么是celery?

    Celery 是一个简单、灵活且可靠的,处理大量消息的分布式系统
    Celery 是一个用 Python 编写异步的分布式任务队列,主要用于实时处理和任务调度。不过它的消息中间件是默认选择使用 rabbitMQ ,也可以使用 redis ,它还支持其他的消息队列或者是数据库。

  2. celery组件包括

    1. Celery Beat: 任务调度器,用来调度周期任务。
    2. Producer: 任务生产者,调用 Celery 产生任务。
    3. Broker: 消息中间件,任务消息存进队列,再按序发送给消费者。
    4. Celery Worker: 执行任务的消费者,通常可以进行在多台服务器上运行多个消费者。
    5. Result Backend: 任务处理完成之后保存状态信息和结果,一般是数据库。
  3. 工作原理:

    任务模块Task: 包含异步任务和定时任务。异步任务通常在业务逻辑中被触发并发往任务队列,而定时任务由 Celery Beat 进程周期性地将任务发往任务队列。
    消息中间件Broker: 即为任务调度队列,接收任务生产者发来的消息(即任务),将任务存入队列。Celery 本身不提供队列服务,官方推荐使用 RabbitMQ 和 Redis 等。
    任务执行单元Worker : 是执行任务的处理单元,它实时监控消息队列,获取队列中调度的任务,并执行它这是实现分布式的核心。
    结果储存Backend: 用于存储任务的执行结果,存储也可使用 RabbitMQ, Redis 和 MongoDB 等。

  4. celery的原理图
    在这里插入图片描述

  5. celery管理与监控

    Celery管理和监控功能是通过flower组件实现的,flower组件不仅仅提供监控功能,还提供HTTP API可实现对woker和task的管理。

  6. 启动celery服务步骤

    1. 启动任务工作者worker
    2. 将任务放入celery队列
    3. worker读取队列,并执行任务
  7. 启动一个工作者,创建一个任务队列

    celery -A tasks worker --loglevel=info
    注释:-A 指定celery名称,loglevel制定log级别

  8. 调度任务

    使用delay()或apply_async()方法来调度任务,事实上delay已经封装了apply_async方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值