在开发的过程中,我们或多或少都会开发一些小的程序,比如下载数据、清理数据、发送邮件等等。程序写完后,我们会将它们部署到特定的机器上去运行,有些需要在Linux机器上跑,有些又需要在Windows机器上面跑。需要定时的话就在任务计划中添加一个计划,每个程序运行的结果都可以自己写入相应的日志文件中。这样的解决方案对于少数的任务来说足够了,如果任务数量变多了,我们就会被下面的任务困扰
- 任务非常多,单机性能有限,怎么自动分布到不同的机器上去运行
- 方便的获取任务运行的结果
- 有效的监控运行的任务
任务是多样性的,不同的任务可能大部分内容都需要从头写,但是上面提到的问题其实都是关于任务管理方便的,应该可以做成通用的解决方案。在搜索学习后,发现了分布式任务队列
这样一个概念以及开源项目Celery
。
Celery介绍
Celery
系统内部通信通过消息队列来进行,解耦了用户和执行者。用户在消息队列中添加一个消息就会发起一个任务,消息中间件将消息传递给执行者,执行者就会运行对应的程序。
一个Celery
系统由多个执行者和消息队列组成,这样一个架构有着高可用行以及水平扩展能力。
Celery
系统有Python
编写,但是其使用的通信协议却可以使用任意语言实现,包括HTTP
调用。
Celery安装
Celery
的安装非常简单,通过pip
命令就能够安装
pip install celery |
Celery
依赖消息队列,因此还需要安装消息中间件,建议安装推荐的RabbitMQ
,安装指引可以看这里