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 程序之间的进程间通信的主要内容,如果未能解决你的问题,请参考以下文章