我想做的就是通过套接字进行一些RPC调用.我有一台运行jython 2.5的后端程序服务器.我需要从CPython上运行Django的前端服务器进行一些调用.我一直在靠墙打败任何形式的IPC.
我试过的事情清单:
Apache Thrift没有任何实际版本,只有快照.我想用稳定的东西.
JSON-RPC很有趣,它应该能够在套接字上运行,但实际上大多数实现似乎只能在HTTP上运行.HTTP开销正是我想要避免的.
协议缓冲区实际上只是一个序列化协议.从我收集的protobuf提供RPC的接口生成,但它只是接口.实际上,编写所有连接代码取决于用户.如果我要使用套接字卡住,我只会使用JSON进行序列化.它更简单,更快捷.
Pyro无法与Jython作为服务器正常工作.某种套接字超时问题.我已经向邮件列表发送了一条消息.
pysage Yay传递消息!只需要python 2.6或处理模块(具有已编译的扩展).Jython是2.5版本,不允许编译扩展.
Candygram是一种有趣的替代pysage,但据我所知,它没有维护.我还没有尝试过Jython.有任何经验吗?
Twisted Perspective Broker Twisted对Jython不起作用.
我知道用XML-RPC做这件事很容易,这让我更加胡思乱想.我想避免HTTP的开销,但同时我真的不想让套接字变脏并实现我自己的协议.如果我这样做,我会做错的.
有任何想法吗?我可能会哭大约20分钟,然后只使用XML-RPC.
你考虑过Hessian吗?从模糊:
Hessian二进制Web服务协议使Web服务无需大型框架即可使用,并且无需学习另一个字母表的协议.因为它是二进制协议,所以它非常适合发送二进制数据而无需使用附件扩展协议.
它有Python客户端和Java服务器(以及更多).
更新:如果您已经死了,为什么不使用SocketServer
和pickle
?没有太多的协议需要,很难出错.发送/接收带有长度前缀的pickle字符串.
如何使用套接字,但在asyncore
和asynchat
?的帮助下?
一些链接:
一个例子
http://docs.python.org/library/asyncore.html
http://docs.python.org/library/asynchat.html