Celery - 分布式任务队列
用官方文档的原话说 ,Celery是一个简单,灵活,可靠的分布式系统,用于处理大量消息,同时为操作提供维护此类系统所需的工具。
它是一个任务队列,专注于实时处理,同时还支持任务调度。
Celery是用Python编写的,但协议可以用任何语言实现。
除了 Python 之外,还有 Node.js 和 PHP 客户端。
生产者消费者模式
Celery的架构
Celery的架构由三部分组成,消息中间件(message broker),任务执行单元(worker)和任务执行结果存储(task result store)组成。
消息中间件
celery消息中间件,也就是所谓的中间人,官方支持的两种稳定的消息队列数据库,一个是RabbitMQ,另一个 Redis。当然选用其他数据库也是可行的,比如, MongoDB 等,用的比较多的当然就是高性能Redis数据库啦,当然MQ也同样强大。 Worker 进程会持续监视队列中是否有需要处理的新任务(如果有就消费,没有则持续监听队列)
任务执行单元
Worker 是 Celery 提供的任务执行的单元,Worker 并发的运行在分布式的系统节点中,也就是充当了任务工人的角色(消费者),用于系统调度。
在开启中间消息队列之后,任务单元会监听消息队列并从中间件里消费任务,执行任务单元,将结果存入后端数据库。
任务结果存储
Celery支持以不同方式存储任务的结果,后端存储包括 Redis,MongoDB,