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]
- 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.
- 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_imppoller: config for
Poller
- property kill_timeout
Timeout for kill subprocess.
- poll(tracer: SubprocessTracer)[source]
Poll a tracer. Should be implemented by subclass.
- property poll_szie
Poll size for subprocess.
- property timeout
Timeout for poll.