Python 和 Scala 程序之间的进程间通信

Posted

技术标签:

【中文标题】Python 和 Scala 程序之间的进程间通信【英文标题】:Inter-process communication between Python and Scala programs 【发布时间】:2014-05-27 09:00:24 【问题描述】:

我有一个由 CherryPy Web 框架支持的网站和一个运行在同一台机器上并包含一个演员系统的 scala 程序。操作系统是 Ubuntu 12.04。

我想要的是:一旦用户填写并提交表单,我会将 CherryPy 后端的数据作为 JSON 字符串发送到 scala 程序。如何才能做到这一点?我应该在我的 python 和 scala 程序中使用什么来实现这个功能?

【问题讨论】:

这取决于你的 scala 程序如何与外界通信。它是从套接字读取还是什么?那么你的 Python 程序确实可以在它有数据时写入该套接字。 @Ashalynd 它还没有,但看起来这是解决我的问题的方法。 【参考方案1】:

您可以考虑使用 RabbitMQ 之类的消息代理,而不是使用原始套接字。它同时支持 Scala 和 Python。

http://www.rabbitmq.com/tutorials/tutorial-one-python.html

在 Scala 方面,Akka 有一个 AMQP 模块,它将 AMQP 连接、生产者和消费者抽象为 Actor。

http://doc.akka.io/docs/akka-modules/1.3.1/modules/amqp.html

【讨论】:

【参考方案2】:

由于您使用的是 *nix 系统,您可能需要查看Unix domain sockets(该链接包含一个非常清晰的示例用法)。

您可以使用 python socket 模块轻松创建一个 Unix 套接字:

import socket
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)

【讨论】:

谢谢,我想我现在或多或少地明白了我应该做什么。我将使用您的链接在 python 端发送数据,并找到一种方法来监听 scala 端所需的套接字。

以上是关于Python 和 Scala 程序之间的进程间通信的主要内容,如果未能解决你的问题,请参考以下文章

资深程序员:深入Python进程间通信原理!

Python进程间通信建议

python线程间通信的问题,回答有加分!300

Android中线程与线程,进程与进程之间如何通信?

如何处理两个进程之间的进程间通信?

113 python程序中的进程操作-进程间数据共享(multiProcess.Manger)