在Python中,如何与运行Node.js进程持续通信?

时间:2013-01-01 04:03:04

标签: python node.js plugins io sublimetext2

(如果我刚开始使用Python,这有点模糊,请道歉。)

我正在创建一个SublimeText 2 intellisense插件,该插件与从Node.js脚本生成的正在运行的命令行节点服务器进行通信。我想在这里找到的节点应用程序:https://github.com/clausreinke/typescript-tools。 (请注意,一旦调用了tss命令,它就会启动它自己的子进程命令行repl,它需要接收要执行的命令。获取命令到命令行是完全不同< / em>问题本身,我还没有解决。)

我可以通过以下方式成功地与节点“交谈”:

self.process = subprocess.Popen( self.args,
                stdin = subprocess.PIPE,
                stdout = subprocess.PIPE,
                stderr = subprocess.STDOUT)

self.result = self.process.communicate()[0]

使用

调用
self.thread = NodeJS( args )
self.thread.start()
self.handle_thread( self.thread )

问题是一旦执行了node.js文件,它就会关闭管道并退出IO进程。对该过程的后续调用返回

ValueError: I/O operation on closed file

我的问题是:如何启动节点应用程序,在后台运行它,然后从Python连续“管道”命令?

我想

  1. 插件加载时启动node.js服务器并使其在后台运行
  2. 侦听键输入,然后发送到节点(已在工作)
  3. 将运行节点进程的输出(在查找定义之后)传递回python,然后显示输出,但不关闭线程或进程
  4. 所有步骤都是完整的,除了连续的异步来回,我似乎无法弄清楚。

    任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

在Python中创建Unix域套接字或邮件槽,在Node.js中连接它,并将其用作您的通信渠道。