0
私は、バックエンドデーモンとしてpythonサブプロセスを使用するneovimプラグイン(重要な部分ではありません)を作成しました。私は、標準入力にデータを送信し、標準出力Pythonサブプロセスが高いコンテンツ長でロックアップ
プラグインの基礎からデータを返すコードが今のよう
ここ
あり、すべてのもののように動作します期待される。しかし、今私は__server_handle
が返されたコンテンツの長さが33Kのかなり高いときにロックアップするのを見ています。
In this while block私はstdoutから実際のコンテンツを抽出しようとしていますが、データを返すことはできず、コンテンツの長さでのみロックします。
サブプロセスがロックアップされないようにこれを処理する方がいいでしょうか?
while True:
headerline = Client.__server_handle.stdout.readline().strip()
linecount += 1
if len(headerline):
key, value = headerline.split(":", 2)
headers[key.strip()] = value.strip()
if "Content-Length" not in headers:
raise RuntimeError("Missing 'Content-Length' header")
contentlength = int(headers["Content-Length"])
returned_string = Client.__server_handle.stdout.read(contentlength)
ret = json.loads(returned_string)
ポーリングでは、データが返されるまでプロセスに「ping」するだけでよいのでしょうか?私の懸案事項は、返送されるデータが非同期ではないコード補完用であることです – mhartington