0

(私はPythonを始めたばかりなので、これが多少曖昧である場合は申し訳ありません。)

Node.js スクリプトから生成された実行中のコマンドライン ノード サーバーと通信する SublimeText 2 Intellisense プラグインを作成中です。通信したいノード アプリケーションは、 https ://github.com/clausreinke/typescript-tools にあります。(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

私の質問は次のとおりです。ノード アプリを起動し、バックグラウンドで実行してから、Python から継続的にコマンドを「パイプ」する方法を教えてください。

私はしたいと思います

  1. プラグインのロード時に node.js サーバーを起動し、バックグラウンドで実行し続ける
  2. ノードに送信するキー入力をリッスンします(すでに機能しています)
  3. 実行中のノード プロセスからの出力をパイプ処理して (定義を調べた後) Python に戻し、出力を表示しますが、スレッドまたはプロセスを閉じないでください。

すべての手順が完了しましたが、非同期の連続的なやり取りを除いて、私には理解できないようです。

どんな助けでも大歓迎です。

4

1 に答える 1

1

Python で Unix ドメイン ソケットまたはメールスロットを作成し、Node.js でそれに接続して、それを通信チャネルとして使用します。

于 2013-01-01T04:06:36.480 に答える