Celery(分布式任务队列)入门学习笔记

在步入到 AWS 后,设计一个典型的分布式计算任务模式是

  1. 提交任务的客户端把一组组待计算任务的输入编制成消息发送到 SQS 或 SNS 队列中
  2. SQS 消息可被  ECS 或 Lambda 处理, SNS 消息还能触发 Lambda,ECS/Lambda 完成实际的计算任务
  3. 结果可以保存到 Redis, S3 或别处, 如果提交任务端想要获取计算结果,可用 ID 来追踪

用 ECS 的好处是可以基于 SQS 的消息数进行 AutoScaling 配置,决定 Worker 的规模; 用 Lambda 适当的用 Concurrency 数来限定 Lambda 的实例数。

而 Python 的 Celery 让这一切变得更简单,它其实就是以上设计的一个集成方案。它以配置的方式选择使用任务队列(Broker), 结果存储方式(Backend), 让任务提交与 Worker 的代码实现简单化。 阅读全文 >>