Skip to content

Commit b6652d2

Browse files
Supress stdout output from adapter
1 parent 412b46c commit b6652d2

1 file changed

Lines changed: 20 additions & 2 deletions

File tree

backend/src/acidwatch_api/routes/models.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
from __future__ import annotations
22

33
import logging
4+
import os
5+
import sys
46
from collections import defaultdict
5-
from typing import Annotated
7+
from contextlib import contextmanager
8+
from typing import Annotated, Generator
69
from uuid import UUID, uuid4
710

811
from fastapi import APIRouter, BackgroundTasks, HTTPException, Request
@@ -211,11 +214,26 @@ async def run_adapters(
211214
)
212215

213216

217+
@contextmanager
218+
def _suppress_stdout() -> Generator[None, None, None]:
219+
sys.stdout.flush()
220+
saved_fd = os.dup(1)
221+
devnull = os.open(os.devnull, os.O_WRONLY)
222+
try:
223+
os.dup2(devnull, 1)
224+
yield
225+
finally:
226+
os.dup2(saved_fd, 1)
227+
os.close(saved_fd)
228+
os.close(devnull)
229+
230+
214231
async def _run_adapter(
215232
sessionmaker: SessionMaker, adapter: BaseAdapter, model_input_id: UUID
216233
) -> dict[str, int | float]:
217234
try:
218-
result = await adapter.run()
235+
with _suppress_stdout():
236+
result = await adapter.run()
219237

220238
phases: list[Phase]
221239
panels: list[AnyPanel] = []

0 commit comments

Comments
 (0)