初识Celery

在开发的过程中,我们或多或少都会开发一些小的程序,比如下载数据、清理数据、发送邮件等等。程序写完后,我们会将它们部署到特定的机器上去运行,有些需要在Linux机器上跑,有些又需要在Windows机器上面跑。需要定时的话就在任务计划中添加一个计划,每个程序运行的结果都可以自己写入相应的日志文件中。这样的解决方案对于少数的任务来说足够了,如果任务数量变多了,我们就会被下面的任务困扰

  1. 任务非常多,单机性能有限,怎么自动分布到不同的机器上去运行
  2. 方便的获取任务运行的结果
  3. 有效的监控运行的任务

任务是多样性的,不同的任务可能大部分内容都需要从头写,但是上面提到的问题其实都是关于任务管理方便的,应该可以做成通用的解决方案。在搜索学习后,发现了分布式任务队列这样一个概念以及开源项目Celery

Celery介绍

Celery系统内部通信通过消息队列来进行,解耦了用户和执行者。用户在消息队列中添加一个消息就会发起一个任务,消息中间件将消息传递给执行者,执行者就会运行对应的程序。

一个Celery系统由多个执行者和消息队列组成,这样一个架构有着高可用行以及水平扩展能力。

Celery系统有Python编写,但是其使用的通信协议却可以使用任意语言实现,包括HTTP调用。

Celery安装

Celery的安装非常简单,通过pip命令就能够安装

pip install celery

Celery依赖消息队列,因此还需要安装消息中间件,建议安装推荐的RabbitMQ,安装指引可以看这里