Python3 to clojure IPC



我有一个奇怪的要求。我们所处的位置是,我们需要在python3.3工作线程和数据库之间运行基于clojure的服务。出于这个原因,我正在研究在python和clojure之间进行交互的不同方法。我看了Thrift,但不幸的是它还没有支持python3。0mq 看起来也很有趣,但我担心 req/req 模式会阻止 python3 线程(多个进程上会有多个线程需要使用此代理服务)。

是否有任何其他现有的库可以帮助我?归根结底,我可以使用 aleph 和原始套接字从头开始编写自己的服务,但我觉得这会重新发明轮子太多了。

Clojure 表示 JVM。在JVM上运行的大多数语言都允许"调用Java"和"由Java调用",这基本上意味着JVM上的任何其他内容。我从来没有做过,但你可以从Jython打电话给Clojure。现在Jython不支持Python 3语言,但它确实支持Pyro。

这有点牵强,但你可以试试:

                                     JVM
     Python-VM             Jython           Clojure
( Your app -> Pyro ) --> ( Pyro -> Proxy -> Your app )

RMI的参数可能必须转换为Java原语和Java字符串。它可能还需要一些ClassLoader-Voodoo。

到目前为止,

我在Python中非常愉快地使用ZeroMQ;还有Clojure支持,我还没有真正使用过 - 它需要本机库,这可能有点不方便。 我将使用您的 ZeroMQ 参考,即使它不是一个完整的 RPC 机制,因为通常 RPC 问题可以相当简单地分解为一个或多个消息队列上的操作。

同时,还有clojure-py,它可以让你拥有你的Python并吃掉你的Clojure。 它仍然很年轻,并非没有粗糙的边缘,但大多数核心功能都已到位。

最后,总是有XML-RPC,Clojure和Python都有库,如果你只是想要一些简单的东西来粘合你的Python和Clojure。

最新更新