4
我正在寫一個使用使用asyncio子進程時可以設置管道的緩衝區大小嗎?
asyncio.create_subprocess_exec(sub_cmd, *sub_cmd_args, stdout=PIPE, stderr=PIPE)
環繞另一個Python程序相當複雜的腳本 - 我不能永久地修改或以其他方式包括直接 - 捕捉要記錄它的標準輸出/犯錯。包裝的Python腳本不使用-u
(無緩衝)選項,因此包裝程序傾向於登錄大緩衝區塊。如果這是常規的子進程.Popen,我可以通過bufsize=1
得到我想要的,即行緩衝。但是,如果我再補充一點,以asyncio.create_subprocess_exec(),他們的陷阱專門和我得到:
<snip>
File "/usr/lib64/python3.4/asyncio/subprocess.py", line 193, in create_subprocess_exec
stderr=stderr, **kwds)
File "/usr/lib64/python3.4/asyncio/base_events.py", line 642, in subprocess_exec
raise ValueError("bufsize must be 0")
ValueError: bufsize must be 0
我認爲他們的陷阱是有很好的理由,所以我不知道是否有一些其他的方式,我可以影響運輸緩衝。