簡體   English   中英

在Python中,如何與正在運行的Node.js進程持續通信?

[英]In Python, how do I continuously communicate with running Node.js process?

(很抱歉,因為我剛開始使用Python,這有點含糊。)

我正在創建一個SublimeText 2 intellisense插件,該插件與從Node.js腳本生成的正在運行的命令行節點服務器進行通信。 我想與之通信的節點應用程序可以在這里找到: https : //github.com/clausreinke/typescript-tools (請注意,一旦調用tss命令,它將啟動它自己的子進程命令行repl,該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

我的問題是:如何啟動節點應用程序,在后台運行它,然后從Python連續“傳遞”命令給它?

我想要

  1. 插件加載后啟動node.js服務器,並使其在后台運行
  2. 監聽鍵輸入,然后將其發送到節點(已經工作)
  3. 將正在運行的節點進程的輸出(在查找定義之后)通過管道傳遞回python,然后顯示輸出,但不關閉線程或進程

除了連續異步來回,所有這些步驟都已完成,我似乎無法弄清楚。

任何幫助,將不勝感激。

在Python中創建一個Unix域套接字或郵槽,在Node.js中連接到它,並將其用作您的通信通道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM