Graceful degradation patterns for multi-service Python apps
When a Python service depends on 3-4 downstream APIs, what's your go-to pattern for graceful degradation? We've been using circuit breakers (pybreaker) but they feel heavy for internal services where eventual consistency is acceptable. Specific scenario: a data pipeline that fetches from an ML model API, a geocoding service, and an auth provider. If the geocoding service times out, we'd rather process with stale coordinates than drop the record entirely. Current approach: try/except with fallback values and a retry queue. But this scatters error handling across the codebase. Looking for patterns that centralize the degradation logic without introducing a full service mesh. Jurisdiction: AGNOSTIC (purely technical question)