由于celery是一个作业队列/任务队列,name表明它可以维护其任务并处理它们。那么为什么它需要像rabbitmq或redis这样的消息代理?
答案 0 :(得分:3)
Celery是分布式任务队列,这意味着系统可以跨多个位置驻留在多台计算机上
基本架构如下:
工作人员 - 可以从总线(任务队列)获取作业并处理数据的进程,它可以将结果放入总线以供其他工作人员进一步处理
总线 - 任务队列这是一个简单的数据库,它将作业存储为消息,因此工作人员可以检索它们,实现并发和非阻塞数据库非常重要,所以当一个过程从公共汽车上取下工作,它不会阻止其他工人获得/放置他们的工作,redis
和activemq
是这种行为的最佳候选人
Celery
包含scheduler
(节拍),定期将特定作业放在总线上,从而定期创建任务
让我们使用一个废弃的例子,你想废弃世界,但中国只能允许来自它的地区的交通,欧洲和美国也是如此 所以你可以在亚马逊的计算中心建立一个工人并把它们放在世界各地
所以你只能使用一辆公共汽车,让我们说它位于美国,所有其他工人都知道这辆公共汽车并可以连接到它,所以通过在位于的公交车上放置一个特定的工作(废旧瓷器)美国,中国的一个过程可以解决它,因此分发
我建议阅读正式的docs,这是非常直接的