我可以使用Tornado + Celery + RabbitMQ + Redis吗?

时间:2014-05-05 10:53:33

标签: python redis rabbitmq celery tornado

为了在网络上实时传输数据,我打算将Redis用作我的缓存数据层,数据是即时的。 Celery是队列管理器,RabbitMQ是从Redis排队并进入Tornado层的经纪人。然后这个层通过websockets流到前端。

我从未在线发现过Redis + RabbitMQ组合。有人可以指导一个可靠的解决方案。问题是这样的整合是否可行且可取?

1 个答案:

答案 0 :(得分:4)

我现在非常成功地使用Tornado和RabbitMQ(没有Celery)。我还做了一些原型设计,Redis也作为数据库插入系统。成功的最佳机会是找到可以插入Tornado的ioloop的异步库。例如,有tornado-redispika(对于RabbitMQ)和tornado-celery。我应该补充一点,我从未使用龙卷风芹菜,所以我不确定它的质量。

从纯粹的架构角度来看,我认为将Redis和RabbitMQ一起使用都没有任何问题。虽然两者都可以用作消息代理,但RabbitMQ并不适合用作缓存,而Redis非常适合该用例。如果您使用的是memcached而不是Redis,那么它似乎并不常见,对吧?

另外(也许这是我可以建议Redis + RabbitMQ可以工作的最佳论据),Pinterest显然使用(或至少使用)两者来运行他们的网站:http://blog.gopivotal.com/pivotal/case-studies-2/using-redis-at-pinterest-for-billions-of-relationships

我发现another source说他们最终用另一种解决方案取代了Celery / RabbitMQ,但显然它已经为他们工作了一段时间。

编辑:从2011年发现Quora link,表示他们实际上也在运行龙卷风!