首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Twisted,RabbitMQ,

Twisted,RabbitMQ,
EN

Stack Overflow用户
提问于 2013-02-04 11:48:00
回答 2查看 4.5K关注 0票数 5

我想用Python创建两个应用程序,它们应该相互通信。其中一个应用程序的行为应该像服务器,第二个应用程序应该是客户机的GUI。它们可以运行在同一个系统上(在同一台机器上),也可以在远程和不同的设备上运行。

我想问您,我应该使用哪种技术-- AMQP消息传递(如RabbitMQ)、Twisted (如服务器或Tornado)或ZeroMQ --并将应用程序连接到它。将来我想要一些认证等等。

我读过很多问题和文章(比如这个:Why do we need to use rabbitmq),很多人都说“狂犬病和扭曲是不一样的”。我知道他们是。我真的很想知道的不同之处,为什么在这种情况下,其中一个解决方案会优于另一个解决方案。

编辑:--我想将它与以下要求一起使用:

  1. 一次将有一个以上的用户连接--我认为会有1-10个用户连接到同一个程序,他们将协同工作。
  2. 数据发送是告诉用户所做的事情的“消息”--比如远程调用(但不要关注这个问题,因为GUIS可以用不同的语言编写,所以消息将类似于json信息)。
  3. 该系统应允许协作工作,因此应尽可能具有互动性。(当用户输入或执行某些操作时,数据将一直发送)。

补充:我很想知道为什么一种解决方案会比另一种方案更好,而不仅仅是在这种特殊情况下。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-05 19:46:55

to是用来解决C10k网络问题的,它通过Reactor Pattern为您提供异步网络。它也很方便,因为它提供了一个很好的并发抽象,就像Python中的线程/并发不像Erlang那样容易。因此,有些人使用Twisted来分派工作任务,但这不是设计的目的。

RabbitMQ基于message queue模式。这一切都是关于可靠的消息传递,而不是网络。我强调可靠的部分,因为有许多不同的异步网络框架(例如Vert.x)提供消息传递(也称为pub/sub)。

很多时候,大多数人将这两种模式结合在一起,创建一个“消息总线”,它将满足各种网络需求,不存在不必要的网络阻塞,并具有很好的集成性和可扩展性。

“消息队列”非常适合网络“反应堆循环”的原因是,您的不应该在反应堆循环上使用块,所以您必须将阻塞工作分派给其他进程(线程、lwp、单独的机器进程、队列等)。在实践中,最干净的方法是分发消息传递。

根据您的需求,听起来您应该使用异步网络,如果您想要立即显示结果并进行扩展,但您可能可以使用一个简单的系统,它只是投票,因为您只有少数几个客户。那么问题是有多少用户(Twisted)?您希望提供更新(RabbitMQ)有多可靠?最后,你想要你的架构是语言和平台不可知论.也许您以后想使用Node.js (关注消息队列而不是异步网络).ie RabbitMQ)。就我个人而言,我想看看Vert.x,它允许您用Python编写。

票数 10
EN

Stack Overflow用户

发布于 2013-02-05 16:15:12

当有人告诉你Twisted和RabbitMQ是不同的,是因为比较两者就像用不同的目标比较两件事情一样。

扭曲是一个异步框架,就像Tornadao一样。RabbitMQ是一个消息队列系统。你不能把每一个都比较清楚。

你应该把你的问题变成两个新的问题,第一个是我应该用来沟通我的过程的协议吗?答案可以用amqp,协议缓冲器之类的词来解决.

另一个,我应该使用哪个框架来编写我的客户机和服务器程序?这里的答案可能落在Twisted,龙卷风,.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14686136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档