Skip to main content
Health checks are HTTP requests that Sevalla sends to each instance of the web process. The readiness probe decides when an instance gets traffic: during a deployment, new instances receive requests only once it passes. The liveness probe restarts an instance that stops responding. A FastAPI application needs two endpoints for them, one that checks the database and one that only checks that the application answers.

Before you begin

Add the endpoints

Add both routes to storefront/main.py:
storefront/main.py
  • /healthz returns 200 when the database answers a query and 503 when it doesn’t. Use it for readiness: an instance that can’t reach the database gets no traffic.
  • /livez returns 200 whenever the application runs. Use it for liveness, so that a database outage doesn’t restart every instance.
Add more checks to /healthz for each service the application can’t work without, such as await request.app.state.redis.ping() for a Redis cache in an async def route. Commit and push the changes, and wait for the deployment to finish before you turn on the probes.

Turn on the health checks

1

Open the web process

On the application’s Processes tab, click ⋯ on the Web process, then click Update process.
2

Turn on the readiness probe

Under Health checks, turn on Readiness probe and set the Path to /healthz. Keep the Port at the web process’s port, 8080 unless you changed it.
3

Turn on the liveness probe

Turn on Liveness probe, set the Path to /livez, and set the Initial delay to 10 seconds, so a slow start doesn’t count as a failure.
4

Save and deploy

Click Update process, then click Deploy in the undeployed changes bar at the bottom of the page.
The sheet for updating the web process, with its start command, resource, scaling and the Health checks section with the readiness probe onThe sheet for updating the web process, with its start command, resource, scaling and the Health checks section with the readiness probe on
A probe passes when the path answers with a status from 200 to 399 within the timeout (1 second by default). Only the web process has health checks. See Health checks for every probe setting and its default.

Verify

  1. Request the endpoint through your domain: curl -i https://storefront-x7k2m.sevalla.app/healthz returns 200 OK with {"status":"ok"}.
  2. On the Deployments tab, the deployment that turned on the probes reaches Deployed.
If the deployment doesn’t finish, click App health on the Overview tab to see each instance’s status. An instance that fails the readiness probe shows Unready: request the path yourself and check that it returns 200, and that the Port matches the port fastapi run listens on.