Getting Started¶
This guide will help you get started with supervisor-pydantic, a library that provides type-validated Pydantic models for supervisor configuration.
Installation¶
Install supervisor-pydantic using pip:
pip install supervisor-pydantic
Prerequisites¶
To actually run supervisor processes, you’ll need to have supervisord installed:
pip install supervisor
Quick Start¶
Creating a Basic Configuration¶
The simplest way to get started is with SupervisorConvenienceConfiguration, which provides sensible defaults:
from supervisor_pydantic import (
SupervisorConvenienceConfiguration,
ProgramConfiguration,
)
# Create a configuration with a single program
config = SupervisorConvenienceConfiguration(
port="*:9001",
working_dir="/tmp/my-supervisor",
program={
"my-worker": ProgramConfiguration(
command="python worker.py",
),
},
)
# Write the configuration file
config.write()
# Start supervisor
config.start(daemon=True)
# Check if it's running
if config.running():
print("Supervisor is running!")
Using the Full Configuration¶
For more control, use SupervisorConfiguration directly:
from pathlib import Path
from supervisor_pydantic import (
SupervisorConfiguration,
SupervisordConfiguration,
SupervisorctlConfiguration,
InetHttpServerConfiguration,
ProgramConfiguration,
)
config = SupervisorConfiguration(
supervisord=SupervisordConfiguration(
logfile=Path("/var/log/supervisord.log"),
pidfile=Path("/var/run/supervisord.pid"),
),
supervisorctl=SupervisorctlConfiguration(
serverurl="http://localhost:9001",
),
inet_http_server=InetHttpServerConfiguration(
port="*:9001",
username="admin",
password="secret",
),
program={
"web-server": ProgramConfiguration(
command="python -m http.server 8080",
autostart=True,
autorestart=True,
),
},
config_path=Path("/etc/supervisor/supervisord.conf"),
working_dir=Path("/var/supervisor"),
)
# Generate the configuration file content
print(config.to_cfg())
# Write to disk
config.write()
Using the CLI¶
supervisor-pydantic includes a CLI for managing supervisor instances:
# Start supervisor with a configuration
_supervisor_convenience start-supervisor --cfg pydantic.json
# Check program status
_supervisor_convenience check-programs --cfg pydantic.json
# Stop all programs
_supervisor_convenience stop-programs --cfg pydantic.json
# Stop supervisor
_supervisor_convenience stop-supervisor --cfg pydantic.json
Note
This CLI should be considered work-in-progress, thus the underscore prefix
Next Steps¶
See the Examples for more detailed use cases
Check the API Reference for complete documentation of all configuration options
Learn about integration with other airflow-laminar libraries below
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.
from airflow_supervisor import SupervisorOperator
# Use supervisor-pydantic configuration in Airflow
operator = SupervisorOperator(
task_id="start_worker",
configuration=SupervisorConvenienceConfiguration(...),
)
airflow-config¶
airflow-config provides configuration management for Airflow. You can use supervisor configurations within your Airflow workflows that are managed by airflow-config.
See the documentation for each library for more details on integration patterns.