celery知识点总结
Celery 是分布式任务队列(Task Queue)工具,主要用于处理异步任务(如发送邮件、生成报表)、定时任务(如定时数据备份)等场景
一、Celery 队列的核心组件
生产者(Producer):调用任务函数(如 task.delay()),Celery 会将任务序列化后发送到 Broker 队列
任务队列(Broker):如redis、RabbitMQ
消费者(Worker):运行 Celery 进程的服务器,持续从 Broker 中获取任务并执行。
结果存储(Backend):用于存储任务的执行结果(如成功 / 失败状态、返回值)。常用 Backend 有:Redis、MySQL、PostgreSQL、MongoDB 等。
二、delay 和 apply_async
当你用 @app.task 装饰一个函数后,它会成为一个 Task 类的实例,而 delay 和 apply_async 都是这个实例的方法,用于将任务发送到消息队列(如 RabbitMQ、Redis)中,由 worker 异步执行。
delay 是 apply_async 的简化封装
apply_async 是更底层、更灵活的方法,支持通过参数定制任务的执行方式
