在Python中执行RPC的当前选择是什么?

在Python中执行RPC的当前选择是什么?,python,rpc,Python,Rpc,实际上,我已经用Pyro和RPyC做了一些工作,但是RPC实现比这两个多。我们能把它们列一个清单吗 基于Python的本机协议: 具有许多底层协议的RPC框架: (见附件) 基于JSON-RPC的框架: 肥皂: 基于XML-RPC的框架: XMLRPC,使用标准库中的和模块 其他: -AGPLv3 是Python标准库的一部分: Python 2:和 Python3:(和) 有人试图让SOAP与python一起工作,但我没有对它进行过太多测

实际上,我已经用Pyro和RPyC做了一些工作,但是RPC实现比这两个多。我们能把它们列一个清单吗

基于Python的本机协议:

具有许多底层协议的RPC框架:

  • (见附件)
基于JSON-RPC的框架:

肥皂:

基于XML-RPC的框架:

  • XMLRPC,使用标准库中的和模块
其他:

  • -AGPLv3
是Python标准库的一部分:

  • Python 2:和
  • Python3:(和)

有人试图让SOAP与python一起工作,但我没有对它进行过太多测试,所以我不能说它是好是坏


就是一个例子。

可能是实现SOAP的ZSI。我使用了存根生成器,它工作正常。我遇到的唯一问题是关于通过HTTPS执行SOAP。

自从我问了这个问题后,我开始使用。它非常好,可以在python和非python软件之间使用,并且遵循JSON-RPC标准。但是它缺少一些例子。

你可以试试Ladon。它同时提供多个web服务器协议,因此您可以在客户端提供更大的灵活性

我们正在开发(VPy),这是一个针对Python2.6+和3.x的新ORB/RPC框架的实现。用于审查和测试的功能性AGPL开发版本是。VPy通过通用本机对象层()具有与PyRo和RPyC类似的本机python功能。该产品设计用于实现平台无关的远程对象交互


充分披露:我在开发VPy的公司工作。

你错过了。这是一个相当完整的CORBA实现,因此您还可以使用它与其他支持CORBA的语言进行对话。

是Facebook开发的一个跨语言RPC选项。在套接字上工作,函数签名以独立于语言的方式定义在文本文件中。

这实际上取决于上下文。互联网局域网?网站?分布式计算?快速原型?带宽?邮件大小?@silenghost:完成。我不喜欢默认设置“社区维基”,因为有时候我错了:)@ddaa:Any。我问的是关于RPC的一般术语,如果他们在特定环境中有一些优点/缺点,请将它们添加到列表中。我不久前需要做“真正的”RPC(RFC1050类型),当时的选择没有给人留下太多印象,所以我不得不自己做大部分。如果有人有一个很好的替代方案,我很想听听。对于那些想要Python到Python RPC的人来说,PyRo 4最新版本不支持SSL,但PyRo 3仍然支持SSL——它们都是Python,所以它们支持Python 2、Python 3、PyPy、Jython和IronPython。RPYC确实支持SSL,而电路并没有提到这一点。对于简单的应用程序,您可以考虑支持RHDIS或POSIX IPC上的同步RPC。使用了大部分SOAP框架并实现了一个用于做基于反射的RPC的方法,我的建议很简单——不要这么做。如果您不需要跨语言通信+独立的接口描述+到自定义类的映射,那么SOAP的复杂性只会让人头疼。即使您确实需要使用它,您也需要经验来知道哪些SOAP子集可以安全使用。SOAP通常是噩梦,尤其是在Python中。除非迫不得已,否则不要使用它。我对SOAP的有限经验与这里的其他评论一致。xmlrpc通常会做我需要的所有事情。+1到XML-RPC为了简单起见,甚至考虑到SimpleXMLRPCServer缺乏正确的错误处理。“警告xmlrpc.server模块不安全,无法防止恶意构造的数据。”,因此,它有一些非常有限的用例。@Equidamoid如果您需要解析不受信任或未经验证的数据,请参阅Thrift不支持Python 3,这是一个可耻的个人评论:Thrift是维护的噩梦。我还没有见过两个Linux发行版使用类似的配置标志。不久前(当我从源代码构建0.10.0时),大多数功能都需要被禁用,以使其构建在诸如当前Ubuntu、Debian或Fedora等“异域”系统上。引擎盖下的数据类型改变使得C++的使用变得混乱不堪,代码< > IFIFF ,在12年的存在中,他们没有说服自己的软件已经准备好了1.0.0版本。我喜欢所支持的大量语言,但我认为这是它们的弱点:试图做得太多。(我在维护的一个中型GNU项目中使用thrift。@Roberto,thrift支持Py3,至少现在是这样。)我真的鼓励人们去真正思考你是否真的需要一个跨语言框架,它试图把PHP C++连接到java到Python到Erlang到Haskell的通用LISP到SWIFT。这是不同的语言,这是有原因的,节俭需要做出妥协以找到共同点。我认为绝大多数人实际上只需要连接1到2种不同的语言,而更精简的框架更可取。