Subprocess Monitor

SubprocessMonitor use SubprocessHost as backend for cacheing output of a subprocess.

class duetector.monitors.subprocess_monitor.SubprocessHost(timeout, backend, poll_szie=1024, bufsize=32768, kill_timeout=5, restart_times=0)[source]

Bases: object

_poll(tracer: SubprocessTracer, output)[source]
_writeline(json_str: str, io: IO)[source]
attach(tracer: SubprocessTracer)[source]
detach(tracer: SubprocessTracer)[source]
is_alive(tracer: SubprocessTracer)[source]
notify_init(tracer: SubprocessTracer)[source]
notify_poll(tracer: SubprocessTracer)[source]
notify_stop(tracer: SubprocessTracer)[source]
poll(tracer: SubprocessTracer)[source]

Poll a tracer.

poll_all()[source]

Poll all tracers.

set_callback(tracer, callback)[source]

Set callback for tracer.

shutdown()[source]
class duetector.monitors.subprocess_monitor.SubprocessMonitor(config: dict[str, Any] | None = None, *args, **kwargs)[source]

Bases: Monitor

property auto_init

Auto init tracers when init monitor.

property bufsize

Buffer size for subprocess.

config_scope: str | None = 'monitor.subprocess'

Config scope for monitor.

default_config = {'auto_init': True, 'backend_args': {'max_workers': 10}, 'bufsize': 32768, 'disabled': False, 'kill_timeout': 5, 'poller': {'call_when_shutdown': True, 'interval_ms': 500}, 'pool_size': 1024, 'restart_times': 0, 'timeout': 0.01}

Default config for monitor.

Two sub-configs are available:
  • backend_args: config for self._backend_imp

  • poller: config for Poller

init()[source]
property kill_timeout

Timeout for kill subprocess.

poll(tracer: SubprocessTracer)[source]

Poll a tracer. Should be implemented by subclass.

poll_all()[source]

Poll all tracers. Depends on self.poll.

property poll_szie

Poll size for subprocess.

shutdown()[source]

Shutdown the monitor.

property timeout

Timeout for poll.