[CI]] Tee server logs to both file and stdout/stderr using PIPE (#11185)

This commit is contained in:
Liangsheng Yin
2025-10-03 12:31:13 +08:00
committed by GitHub
parent b00a0c786f
commit de89ef49da

View File

@@ -9,6 +9,7 @@ import os
import random
import re
import subprocess
import sys
import threading
import time
import unittest
@@ -566,11 +567,30 @@ def popen_launch_server(
if return_stdout_stderr:
process = subprocess.Popen(
command,
stdout=return_stdout_stderr[0],
stderr=return_stdout_stderr[1],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
env=env,
text=True,
bufsize=1,
)
def _dump(src, sinks):
for line in iter(src.readline, ""):
for sink in sinks:
sink.write(line)
sink.flush()
src.close()
threading.Thread(
target=_dump,
args=(process.stdout, [return_stdout_stderr[0], sys.stdout]),
daemon=True,
).start()
threading.Thread(
target=_dump,
args=(process.stderr, [return_stdout_stderr[1], sys.stderr]),
daemon=True,
).start()
else:
process = subprocess.Popen(command, stdout=None, stderr=None, env=env)