From 2bf94acb96711139a2026f0ca8e9bc43110b2005 Mon Sep 17 00:00:00 2001 From: Daniel Allaire Date: Wed, 30 Sep 2026 17:25:14 -0400 Subject: [PATCH] reconstruire-locataire : les sous-commandes ecrivent sans tampon L'etape parefeu est restee muette douze minutes : ecrivant dans un tuyau, le Python enfant gardait sa sortie par blocs. PYTHONUNBUFFERED pour tous les enfants, -u pour eprouver_parefeu. Co-Authored-By: Claude Opus 5.5 --- scripts/reconstruire_locataire.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/scripts/reconstruire_locataire.py b/scripts/reconstruire_locataire.py index 2c55934..3fb1606 100644 --- a/scripts/reconstruire_locataire.py +++ b/scripts/reconstruire_locataire.py @@ -68,7 +68,14 @@ def dire(msg: str) -> None: def lancer(cmd: list[str], *, env: dict | None = None, filtre: tuple[str, ...] = ()) -> int: - """Execute, verse TOUT au journal, n'affiche que les lignes qui disent ou l'on en est.""" + """Execute, verse TOUT au journal, n'affiche que les lignes qui disent ou l'on en est. + + SANS TAMPON (2026-09-30). Ecrivant dans un tuyau, un Python enfant garde sa sortie par + blocs de plusieurs kilo-octets : l'etape `parefeu` est restee muette douze minutes a la + premiere reconstruction lancee par l'exploitant, qui s'est demande si tout etait gele. + `PYTHONUNBUFFERED` vaut pour tous les enfants Python, Ansible compris. + """ + env = dict(env or os.environ, PYTHONUNBUFFERED="1") with subprocess.Popen(cmd, cwd=RACINE, env=env, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.DEVNULL, text=True) as p: assert p.stdout @@ -244,7 +251,7 @@ def main() -> int: if time.time() > limite: return arret(nom, 4, "delai de surveillance depasse — le montage continue sur le runner") elif nom == "parefeu": - rc = lancer([sys.executable, "scripts/eprouver_parefeu.py", "--instance", T, "--flotte", "--activer", + rc = lancer([sys.executable, "-u", "scripts/eprouver_parefeu.py", "--instance", T, "--flotte", "--activer", "--runner", args.runner, "--rebond", args.rebond, "--racine-runner", args.racine_runner], env=env, filtre=("=== ", "avant :", "apres :", "Icinga", "ARRET", "VM : pare-feu", "REFUS")) else: # bilan