supervisor-pydantic¶
Pydantic models for supervisor
Overview¶
This library provides type-validated Pydantic models of all configuration options for supervisor.
It provides:
SupervisorConfiguration: top-level wrapper around all supervisor configuration options, with a utility method to generate asupervisord.confSupervisorConvenienceConfiguration: wrapper aroundSupervisorConfigurationto make a few things easier to configure, for integration with airflow-supervisor and other external toolsSupervisordConfiguration: wrapper aroundsupervisordSupervisorctlConfiguration: wrapper aroundsupervisorctlProgramConfiguration: wrapper aroundprogramEventListenerConfiguration: wrapper aroundeventlistenerFcgiProgramConfiguration: wrapper aroundfcgi-programGroupConfiguration: wrapper aroundgroupIncludeConfiguration: wrapper aroundincludeInetHttpServerConfiguration: wrapper aroundinit-http-serverRpcInterfaceConfiguration: wrapper aroundrpcinterfaceUnixHttpServerConfiguration: wrapper aroundunix-http-server
classDiagram
SupervisorConfiguration <|-- SupervisorConvenienceConfiguration
SupervisorConfiguration *-- SupervisordConfiguration
SupervisorConfiguration *-- SupervisorctlConfiguration
SupervisorConfiguration *-- InetHttpServerConfiguration
SupervisorConfiguration *-- UnixHttpServerConfiguration
SupervisorConfiguration *-- IncludeConfiguration
SupervisorConfiguration *-- ProgramConfiguration
SupervisorConfiguration *-- EventListenerConfiguration
SupervisorConfiguration *-- FcgiProgramConfiguration
SupervisorConfiguration *-- GroupConfiguration
SupervisorConfiguration *-- RpcInterfaceConfiguration
class SupervisorConfiguration {
supervisord: SupervisordConfiguration
supervisorctl: SupervisorctlConfiguration
inet_http_server: InetHttpServerConfiguration
unix_http_server: UnixHttpServerConfiguration
include: IncludeConfiguration
program: Dict~str, ProgramConfiguration~
eventlistener: Dict~str, EventListenerConfiguration~
fcgiprogram: Dict~str, FcgiProgramConfiguration~
group: Dict~str, GroupConfiguration~
rpcinterface: Dict~str, RpcInterfaceConfiguration~
config_path: Path
working_dir: Path
load(config_dir; str, config_name: str, overrides: List~str~)
write()
rmdir()
start(daemon: bool)
running()
stop()
kill()
}
class SupervisorConvenienceConfiguration {
startsecs: int
startretries: int
exitcodes: List~int~
stopsignal: Signal
stopwaitsecs: int
port: str
password: str
rpcinterface_factory: str
local_or_remote: str
host: str
protocol: str
rpcpath: str
command_timeout: int
}
class SupervisordConfiguration {
logfile: Path
logfile_maxbytes: str
logfile_backups: int
loglevel: LogLevel
pidfile: Path
umask: OctalUmask
nodaemon: bool
silent: bool
minfds: int
minprocs: int
nocleanup: bool
childlogdir: Path
user: str
directory: Path
strip_ansi: bool
environment: dict
identifier: str
}
class SupervisorctlConfiguration {
serverurl: str
username: str
password: str
prompt: str
history_file: Path
}
class InetHttpServerConfiguration {
port: str
username: str
password: str
}
class UnixHttpServerConfiguration {
file: Path
chmod: Octal
chown: str
username: str
password: str
}
class IncludeConfiguration {
files: List~str~
}
class ProgramConfiguration {
command: str
process_name: str
numprocs: int
numprocs_start: int
priority: int
autostart: bool
startsecs: int
startretries: int
autorestart: bool
exitcodes: List~int~
stopsignal: Signal
stopwaitsecs: int
stopasgroup: bool
killasgroup: bool
user: str
redirect_stderr: bool
stdout_logfile: Path
stdout_logfile_maxbytes: str
stdout_logfile_backups: int
stdout_capture_maxbytes: int
stdout_events_enabled: int
stdout_syslog: bool
stderr_logfile: Path
stderr_logfile_maxbytes: str
stderr_logfile_backups: int
stderr_capture_maxbytes: int
stderr_events_enabled: bool
stderr_syslog: bool
environment: Dict~str, str~
directory: Path
umask: OctalUmask
serverurl: str
}
class EventListenerConfiguration {
buffer_size: int
events: List~EventType~
result_handler: str
}
class FcgiProgramConfiguration {
socket: str
socket_backlog: str
socket_owner: strOrGroup
socket_mode: Octal
}
class GroupConfiguration {
programs: List~str~
priority: int
}
class RpcInterfaceConfiguration {
rpcinterface_factory: str
kwargs: Dict~str, Any~
}
Additionally, this library provides a small convenience CLI (_supervisor_convenience) for remotely managing supervisor. It is a simple wrapper around the supervisord and supervisorctl CLIs in supervisor.
check-programs: Check if programs are in a good state.configure-supervisor: Write a SupervisorConvenienceConfiguration JSON as a supervisor config fileforce-kill: Kill the supervisor instance with os.killrestart-programs: Restart all programs in the supervisor instancestart-programs: Start all programs in the supervisor instancestart-supervisor: Start a supervisor instance using supervisord in backgroundstop-programs: Stop all programs in the supervisor instancestop-supervisor: Stop the supervisor instanceunconfigure-supervisor: Remove the supervisor config file and working directory
Integration with Other Libraries¶
supervisor-pydantic is designed to integrate seamlessly with other libraries in the airflow-laminar ecosystem:
airflow-supervisor¶
airflow-supervisor uses supervisor-pydantic to manage external processes as part of Airflow DAGs. It provides operators and sensors for starting, monitoring, and stopping supervised processes within your Airflow workflows.
airflow-config¶
airflow-config provides configuration management for Airflow, including support for supervisor configurations. You can define your supervisor configurations alongside your DAG configurations for consistent, centralized management.
Documentation¶
Full documentation is available at https://airflow-laminar.github.io/supervisor-pydantic/.
Getting Started - Installation and quick start guide
Examples - Practical examples for common use cases
API Reference - Complete API documentation
Note
This library was generated using copier from the Base Python Project Template repository.