feat: add async health endpoint

This commit is contained in:
Jonathan Kössler 2024-07-23 15:42:48 +02:00
parent 13d670091c
commit c7e0df758e

View File

@ -1,3 +1,4 @@
import inspect
import logging import logging
import threading import threading
from typing import Callable from typing import Callable
@ -31,13 +32,23 @@ def add_health_check_endpoint(app: FastAPI, health_function: HealthFunction) ->
"""Add a health check endpoint to the app. The health function should return True if the service is healthy, """Add a health check endpoint to the app. The health function should return True if the service is healthy,
and False otherwise. The health function is called when the endpoint is hit. and False otherwise. The health function is called when the endpoint is hit.
""" """
if inspect.iscoroutinefunction(health_function):
@app.get("/health") @app.get("/health")
@app.get("/ready") @app.get("/ready")
def check_health(): async def async_check_health():
if health_function(): alive = await health_function()
return {"status": "OK"}, 200 if alive:
else: return {"status": "OK"}, 200
return {"status": "Service Unavailable"}, 503
else:
@app.get("/health")
@app.get("/ready")
def check_health():
if health_function():
return {"status": "OK"}, 200
return {"status": "Service Unavailable"}, 503 return {"status": "Service Unavailable"}, 503
return app return app