Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.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
在Python中,如何与正在运行的Node.js进程持续通信?_Python_Node.js_Plugins_Io_Sublimetext2 - Fatal编程技术网

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

在Python中,如何与正在运行的Node.js进程持续通信?,python,node.js,plugins,io,sublimetext2,Python,Node.js,Plugins,Io,Sublimetext2,(如果这有点模糊,我深表歉意,因为我刚刚开始使用Python。) 我正在创建一个SublimiteText 2 intellisense插件,该插件与node.js脚本生成的正在运行的命令行节点服务器进行通信。我想与之通信的节点应用程序可以在此处找到:。(请注意,调用tss命令后,它将启动自己的子流程命令行repl,该子流程需要接收命令才能执行。将命令发送到该命令行本身是一个完全不同的问题,我尚未解决。) 我可以通过以下方式与节点成功“对话”: self.process = subprocess

(如果这有点模糊,我深表歉意,因为我刚刚开始使用Python。)

我正在创建一个SublimiteText 2 intellisense插件,该插件与node.js脚本生成的正在运行的命令行节点服务器进行通信。我想与之通信的节点应用程序可以在此处找到:。(请注意,调用tss命令后,它将启动自己的子流程命令行repl,该子流程需要接收命令才能执行。将命令发送到该命令行本身是一个完全不同的问题,我尚未解决。)

我可以通过以下方式与节点成功“对话”:

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
我的问题是:如何启动node应用程序,在后台运行它,然后从Python向其连续发送“管道”命令

我想

  • 加载插件时启动node.js服务器,并使其在后台运行
  • 监听输入键,然后将其发送到节点(已在工作)
  • 将正在运行的节点进程的输出(在查找定义之后)通过管道传回python,然后显示输出,但不要关闭线程或进程
  • 所有的步骤都完成了,除了连续的异步来回,我似乎无法理解


    任何帮助都将不胜感激。

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

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