14

我要做的就是通过套接字进行一些 RPC 调用。我有一台运行 jython 2.5 的后端服务器。我需要从在 CPython 上运行 Django 的前端服务器进行一些调用。我一直在努力争取任何形式的 IPC。

我尝试过的事情清单:

  • Apache Thrift没有任何实际版本,只有快照。我想用一些稳定的东西。
  • JSON-RPC很有趣,它应该能够在套接字上运行,但实际上大多数实现似乎只能在 HTTP 上运行。HTTP 开销正是我想要避免的。
  • Protocol Buffers实际上只是一个序列化协议。从我收集的内容来看,protobuf 为 RPC 提供了接口生成,但它只是接口。实际上编写所有连接代码取决于用户。如果我将无法使用套接字,我将只使用 JSON 进行序列化。它更简单,更快
  • Pyro无法将 Jython 作为服务器正常工作。某种套接字超时问题。我已经向邮件列表发送了一条消息。
  • pysage是的,用于消息传递!只有它需要 python 2.6 或处理模块(已编译扩展)。Jython 是 2.5 版,不允许编译扩展。
  • Candygram是 pysage 的一个有趣的替代品,但据我所知,它没有维护。我什至没有用 Jython 尝试过。有什么经验吗?
  • Twisted Perspective Broker Twisted 不适用于 Jython。

我知道用 XML-RPC 做这件事会很容易,这让我更加暴躁。我想避免 HTTP 的开销,但同时我真的不想用套接字来实现我自己的协议。如果我这样做,我会做错。

有任何想法吗?我可能会哭大约 20 分钟,然后就使用 XML-RPC。

4

5 回答 5

6

你考虑过黑森吗?从简介:

Hessian 二进制 Web 服务协议使 Web 服务无需大型框架即可使用,并且无需学习另一种协议字母汤。因为它是一个二进制协议,所以它非常适合发送二进制数据,而无需通过附件扩展协议。

它有 Python 客户端和 Java 服务器(以及更多)。

更新:如果你不喜欢 HTTP,为什么不直接使用SocketServerandpickle呢?不需要太多的协议,很难出错。发送/接收带有长度前缀的腌制字符串。

于 2009-07-22T08:00:13.550 回答
5

使用套接字怎么样,但在 and 的帮助asyncoreasynchat

一些链接:

于 2009-07-22T08:56:45.243 回答
2

两个我觉得最有趣的:

  • GearmanPython 绑定。现在它已经用 C(最初是 perl)重写了,速度快了很多。它在生产中使用(尽管我无法指出生产中使用的 python 绑定的任何示例)。它对 MySQL 和 Postgresql 有非常有趣的(对我而言)接口。最后,今天的推文来自 Django 的 Jacob Kaplan-Moss。

  • RabbitMQ虽然因为它只是一个消息队列,但您仍然必须序列化自己的消息,除非您还使用celery

于 2009-07-22T09:57:04.093 回答
2

我最喜欢的.. zeroc's ice

于 2009-07-22T14:14:53.090 回答
0

您是否考虑过使用 CORBA?它快速、便携且面向对象...

我只在 Java 端使用过它(我认为您可以使用纯 Java 代理,而不会出现 Jython 的问题),并且使用 IIOP,您应该能够与 CPython 客户端进行互操作。

于 2009-07-22T08:27:26.413 回答