【问题标题】:What RPC module should I use to implement RCP in Python and be able to change connection method later?我应该使用什么 RPC 模块在 Python 中实现 RCP 并能够在以后更改连接方法?
【发布时间】:2011-12-08 11:24:02
【问题描述】:

我确实必须实现一些从 Python 到 Python 的 RPC,但出于安全原因,连接方法非常有限。

目前看来我可以使用SSH 进行连接并在远程系统上运行单个 python 脚本。

当我们可能不得不使用其他东西进行连接时,这可能会在未来发生变化,也许是telnet,所以我想要一个可以使用不同协议的解决方案。

另一个潜在的限制是关于 Python 版本,即使客户端和服务器运行不同的版本,它也必须与 Python 2.5-2.7 一起使用。

我应该用什么,请只有你有成功经验的人才能建议,否则我也可以谷歌;)

【问题讨论】:

  • 请记住,如果您没有得到任何对您有用的答案,您可以提供赏金。

标签: python ssh rpc


【解决方案1】:

我想说,在您的情况下,通信两个不同的 python 进程的最简单方法是使用pyro3。我最近在一个小项目中使用了pyro4,它让我专注于我想要发送/接收的信息而不是正确编码/解码它的方式非常有效。

我建议您使用 v3,因为根据源代码中的 tox.ini 文件,v4 没有针对 python 2.5 进行测试,因此您可能会遇到一些问题。

关于网络,这个库自己处理套接字,因此没有对 telnet 或 ssh 的任何明确支持(尽管使用 paramiko 在 TODO 列表中)。 Hene,您可能需要像 example 那样依赖 ssh 隧道。

【讨论】:

  • 问题是我无法打开远程系统上的任何端口,连接它的唯一方法是使用 SSH。
【解决方案2】:

作为python 2.6+ 的部分解决方案,您可以查看Versile Python(目前正在开发中),我们刚刚添加了对通过管道进行反应器驱动字节通信的支持(需要一个允许在管道文件上进行 select.select 的平台描述符,即不是 Windows)。这允许通过管道或标准输入/标准输出链接到 VPy ORB。有关如何将其与 ssh 一起使用的示例,请参阅此 recipe

Versile Python 需要 python 2.6+ 或 3.x,所以很遗憾它不适用于 2.5。

【讨论】:

    【解决方案3】:

    Spyne 支持可插拔协议和传输,但还不支持 SSH(或任何其他类似套接字的传输)。这是一个稳定但相当新的项目——尤其是客户端逻辑需要一些认真的工作。

    至于您最初的问题,在我熟悉的序列化程序中(这主要是您在 spyne 网站上看到的),最适合通过流传输进行管道传输的是 MessagePack,因为它支持迭代器-类文件对象(也称为流式反序列化)接口。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-29
      • 1970-01-01
      • 1970-01-01
      • 2017-05-27
      • 2010-09-12
      • 2017-09-12
      • 2011-05-16
      相关资源
      最近更新 更多