feat: add healthcheck

This commit is contained in:
2025-03-13 11:29:30 +01:00
parent e5b58b8db2
commit 333b89194b
+31 -1
View File
@@ -1,6 +1,7 @@
import logging
import requests import requests
from typing import Annotated from typing import Annotated
from fastapi import FastAPI, Header, HTTPException from fastapi import FastAPI, Header, HTTPException, status
from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import FileResponse from fastapi.responses import FileResponse
from pydantic import BaseModel from pydantic import BaseModel
@@ -18,6 +19,20 @@ app.add_middleware(
allow_headers=["*"], allow_headers=["*"],
) )
block_endpoints = ["/health"]
class LogFilter(logging.Filter):
def filter(self, record):
if record.args and len(record.args) >= 3:
if record.args[2] in block_endpoints:
return False
return True
uvicorn_logger = logging.getLogger("uvicorn.access")
uvicorn_logger.addFilter(LogFilter())
class AuthHeaders(BaseModel): class AuthHeaders(BaseModel):
Authorization: str Authorization: str
@@ -31,11 +46,26 @@ class AuthHeaders(BaseModel):
return False return False
class HealthCheck(BaseModel):
"""Response model to validate and return when performing a health check."""
status: str = "OK"
@app.get("/") @app.get("/")
async def home(): async def home():
return FileResponse("index.html") return FileResponse("index.html")
@app.get(
"/health",
response_model=HealthCheck,
status_code=status.HTTP_200_OK,
)
def get_health() -> HealthCheck:
return HealthCheck(status="OK")
@app.get("/favicon.ico") @app.get("/favicon.ico")
async def favico(): async def favico():
return FileResponse("favicon.ico") return FileResponse("favicon.ico")