python强大的定时任务模块Celery(01

花间影清欢课程 2024-03-30 21:02:35

Celery 是基于 python 开发的第三方的任务调度框架,类似于 Apache 的 airflow,airflow 也是基于 python 语言编写的。celery 是用来调度任务的,本身不具备任务存储功能,因此 celery 还需要搭配一些具备存储、访问功能的工具,如消息队列、Redis 缓存、数据库等。官方推荐的消息队列是 RabbitMQ,当然也可以选择 Redis。

一、Celery 的优势

celery 灵活可靠,可以处理大量消息的分布式系统,可以在多个节点之间处理某个任务;celery 专注于实时处理的任务队列,支持任务调度;celery 是开源的,使用者众多;celery 完全基于python语言编写。

二、Celery 的使用场景

异步任务:一些耗时的操作可以交给celery异步执行,而不用等着程序处理完才知道结果;定时任务:如定时推送消息、定时爬取数据、定时统计数据等。

三、Celery架构介绍

celery架构

producer: 任务生产者,专门用来生产任务(task)的;broker: 任务队列,用于存放生产者生产的任务,一般使用消息队列或者Redis来存储,但是具备存储功能的数据库也是可以的。这一部分是celery不提供的,需要依赖第三方。作用就是接收生产者生产的消息,存进队列中,再按顺序发给消费者;celery beat: 任务调度器,调度器进程会读取配置文件的内容,周期性地将配置文件中到期需要执行的任务发送给消息队列;worker: 消费者,执行任务的消费者,可以同时运行多个消费者,并行消费;backend: 用于在任务结束之后保存状态信息和结果,以便查询,一般是保存在数据库中如mysql。
0 阅读:0