【问题标题】:In Python, how do I continuously communicate with running Node.js process?在 Python 中,如何与正在运行的 Node.js 进程持续通信?
【发布时间】:2013-01-01 04:03:03
【问题描述】:

(抱歉,因为我刚刚开始使用 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,然后显示输出,但不要关闭线程或进程

所有的步骤都完成了,除了不断的异步来回,我似乎无法弄清楚。

任何帮助将不胜感激。

【问题讨论】:

  • self.result = self.process.communicate() 顺便关闭管道

标签: python node.js plugins io sublimetext2


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    • 2012-05-06
    • 1970-01-01
    • 2020-03-16
    • 2019-08-05
    相关资源
    最近更新 更多