The goal of this package is to help you to implement the Health Check API pattern.
pip install fastapi-health
Create the health check endpoint dynamically using different conditions. Each condition is a callable, and you can even have dependencies inside of it:
from fastapi import FastAPI, Depends
from fastapi_health import health
def get_session():
return True
def is_database_online(session: bool = Depends(get_session)):
return session
app = FastAPI()
app.add_api_route("/health", health([is_database_online]))
The health()
method receives the following parameters:
conditions
: A list of callables that represents the conditions of your API, it can return eitherbool
or adict
.success_handler
: An optional callable which receives theconditions
results and returns a dictionary that will be the content response of a successful health call.failure_handler
: An optional callable analogous tosuccess_handler
for failure scenarios.success_status
: An integer that overwrites the default status (200) in case of success.failure_status
: An integer that overwrites the default status (503) in case of failure.
It's important to notice that you can have a peculiar behavior in case of hybrid return statements (bool
and dict
) on the conditions.
For example:
from fastapi import FastAPI
from fastapi_health import health
def pass_condition():
return {"database": "online"}
def sick_condition():
return False
app = FastAPI()
app.add_api_route("/health", health([pass_condition, sick_condition]))
This will generate a response composed by the status being 503 (default failure_status
), because sick_condition
returns False
, and the JSON body {"database": "online"}
. It's not wrong, or a bug. It's meant to be like this.
This project is licensed under the terms of the MIT license.