Start here. This is the direct spoken answer to practice first.
Overview
Separates process survival, traffic readiness, and slow initialization without turning shared dependency failure into a restart storm.
Liveness answers whether the Python process is alive and able to make progress. Readiness answers whether this worker should receive traffic, and startup protects a slow-initializing process from premature liveness failure. I keep liveness local instead of making it fail whenever a shared database or provider is down. Readiness checks only dependencies and initialization required to serve the application's current contract, with short bounded calls.