#!/usr/bin/env python3
import atexit
+import logging
import shlex
import subprocess
from typing import List, Optional
+logger = logging.getLogger(__file__)
+
+
def cmd_with_timeout(command: str, timeout_seconds: Optional[float]) -> int:
"""
Run a command but do not let it run for more than timeout seconds.
stderr=subprocess.DEVNULL)
else:
subproc = subprocess.Popen(args, stdin=subprocess.DEVNULL)
+
def kill_subproc() -> None:
try:
if subproc.poll() is None:
subproc.terminate()
subproc.wait(timeout=10.0)
except BaseException as be:
- log.error(be)
+ logger.exception(be)
atexit.register(kill_subproc)
return subproc