如何在不等待首个命令执行完毕的情况下实现管道传输?
如何让PowerShell异步转发持续运行命令的管道输出?
我尝试将日志输出通过管道传输至另一个脚本处理。PowerShell存在这样的行为:它会等待首个命令执行完毕后,才将输出发送至第二个命令。
比如下面的命令可以正常工作(脚本能收到"hi"),因为echo命令很快就执行完了:
echo "hi" | python script.py
但在下面的场景中(caddy是不会终止运行的Web服务器),caddy的标准输出永远无法到达脚本的标准输入:
caddy run | python script.py
有没有办法实现异步转发首个命令的输出到第二个命令,不用等首个命令执行完?
最小复现示例
output.py(持续输出的脚本)
from time import sleep while True: print("SENDING") sleep(1)
onetime.py(单次输出的脚本)
print("SENDING")
input.py(接收输入的脚本)
import sys while True: for line in sys.stdin: print(f"Received: {line}")
以下命令可以正常工作(标准输出会打印Received: SENDING):
python onetime.py | python input.py
以下命令无法正常工作(没有任何输出):
python output.py | python input.py
内容的提问来源于stack exchange,提问作者Matija Sirk
相关产品推荐
相关产品推荐

