Command execution

async pglift.cmd.asyncio_run(args: Sequence[str], *, input: str | None = None, capture_output: bool = True, timeout: float | None = None, check: bool = False, **kwargs: Any) CompletedProcess
pglift.cmd.asyncio_start_program(cmd: Sequence[str], pidfile: Path | None, *, timeout: float = 1, env: Mapping[str, str] | None = None, capture_output: bool = True) AsyncIterator[Process]

Start program described by ‘cmd’, in the background, and possibly store its PID in ‘pidfile’.

Raises:
  • SystemError – if the program is already running.

  • CommandError – in case program execution terminates after timeout.

When used as a context manager, any exception raised within the block will trigger program termination at exit. This can be used to perform sanity checks shortly after program startup.

pglift.cmd.terminate_program(pidfile: Path) None

Terminate program matching PID in ‘pidfile’.

Upon successful termination, the ‘pidfile’ is removed. No-op if no process matching PID from ‘pidfile’ is running.

pglift.cmd.status_program(pidfile: Path) Status

Return the status of a program which PID is in ‘pidfile’.

Raises:
  • SystemError – if the program is already running.

  • CommandError – in case program execution terminates after timeout.