Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
蟒蛇3号到clojure IPC_Clojure_Python 3.x_Ipc_Rpc - Fatal编程技术网

蟒蛇3号到clojure IPC

蟒蛇3号到clojure IPC,clojure,python-3.x,ipc,rpc,Clojure,Python 3.x,Ipc,Rpc,我有一个奇怪的要求。我们需要在python3.3 worker和数据库之间运行基于clojure的服务。出于这个原因,我正在研究python和clojure之间的不同接口方式。我看过Thrift,但不幸的是它还没有Python 3的支持。0mq看起来也很有趣,但我担心req/req模式会阻塞python3线程(在多个进程上会有多个线程需要使用此代理服务) 还有其他现存的图书馆可以帮助我吗?最后,我可以使用aleph和raw套接字从头开始编写自己的服务,但我觉得这太像是重新发明轮子了。Clojur

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


还有其他现存的图书馆可以帮助我吗?最后,我可以使用aleph和raw套接字从头开始编写自己的服务,但我觉得这太像是重新发明轮子了。

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字符串。它可能还需要一些类加载器巫毒

到目前为止,我非常高兴地在生产中使用Python中的ZeroMQ;还有Clojure支持,我还没有真正使用它——它需要本机库,这可能有点不方便。我将使用您的ZeroMQ引用,尽管它不是完整的RPC机制,因为RPC问题通常可以简单地分解为一个或多个消息队列上的操作

同时,还有一个,它可以让你拥有你的Python,也可以吃掉你的Clojure。它仍然很年轻,并不是没有粗糙的边缘,但大多数核心功能已经到位


最后,总是有XML- RPC,其中既有库又有库,如果您只需要简单的将Python和CuljueLe粘合在一起。

在中间相遇-因为我最初在那里有Culjule的唯一原因是因为数据库的Python驱动程序不支持Python 3,而Pyro是Python 2/3兼容的,我可以放下clojure,在那里放一个python2.7代理。将此标记为向我显示pyro:)的已接受答案感谢指向XML-RPC的指针!我喜欢clojure实现的名称。不幸的是,它不是一个常量连接,这是另一个要求(忘记提到它,抱歉=/)。