Back to docs
Concepts

Health & Readiness Checks

Dagy separates a cheap **liveness** signal from a real **readiness** probe (`src/dagy_api/sla.py`), so load balancers stay fast while operators can still actively verify dependencies.

/health — liveness (unauthenticated)

Configuration-only, no network calls. It reports each dependency as healthy when configured or unconfigured when not — it never proves the dependency is reachable, so it cannot be knocked over by a downstream outage. Suitable for frequent load-balancer polling.

/health/detailed — readiness (authenticated)

Actively probes each dependency with a ~2s per-dependency latency budget and returns measured latency:

ComponentProbe
dynamodbdescribe_table on the configured flows table
s3head_bucket on the artifacts bucket
sqsget_queue_attributes on the events queue

Each probe uses a botocore config with max_attempts=0 and the latency budget as connect/read timeout, so a slow dependency is reported (as degraded) rather than making the probe hang.

Status roll-up

Component statusEffect on overall
healthyno change
unconfiguredinformational — does not degrade overall
degraded (e.g. over the 2s budget)overall → degraded
unhealthy (probe error)overall → unhealthy

Treating unconfigured as informational means an operator running without S3 configured does not see a false-red health check.