Python3与Clojure之间的IPC

4
我有一个奇怪的请求。我们需要在Python3.3工作进程和数据库之间运行基于Clojure的服务。为此,我正在研究不同的Python和Clojure接口方式。我看过Thrift,但不幸的是它还没有支持Python3。0mq看起来很有趣,但我担心req/req模式会阻塞Python3线程(多个进程上将需要使用此代理服务的多个线程)。
是否存在其他现有库可以帮助我?归根结底,我可以使用Aleph和原始套接字从头开始编写自己的服务,但我感觉这样会重新发明轮子。

在中间相遇 - https://github.com/halgari/clojure-py - Kyle
2个回答

5
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。


既然我一开始使用clojure的原因只是因为数据库的python驱动程序还不支持python3,而Pyro是python2/3兼容的,那么我可以放弃clojure,改用python2.7代理。非常感谢您介绍pyro给我,我会将其标记为采纳答案。 - Mediocre Gopher

2
我目前在Python中愉快地生产使用ZeroMQ;它也支持Clojure,但我还没有真正使用过——因为它需要本地库,有点不方便。我选择了你的ZeroMQ参考,尽管它不是完整的RPC机制,因为通常RPC问题可以简单地分解为一个或多个消息队列上的操作。
同时,还有clojure-py,它可以让你既使用Python又使用Clojure。它仍然很年轻,而且还有一些粗糙的边缘,但大部分核心功能已经就位。
最后,如果你只想要一个简单的方法将Python和Clojure粘合在一起,那么XML-RPC始终可用,ClojurePython都有相应的库。

感谢您指向XML-RPC!我喜欢Clojure实现的名称。不幸的是,它不是一个常量连接,这是另一个要求(忘记提到了,抱歉=/)。 - Mediocre Gopher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接