From 666570b0690d3f90a01313467a42e86201c060d3 Mon Sep 17 00:00:00 2001 From: Brian Rosner Date: Sun, 12 Jan 2025 09:23:38 -0700 Subject: [PATCH] refactor for healthz endpoint --- app.json | 13 +++++++++++++ teufa/app.py | 16 +++++----------- teufa/v1_api/__init__.py | 16 +++++++++++++++- 3 files changed, 33 insertions(+), 12 deletions(-) create mode 100644 app.json diff --git a/app.json b/app.json new file mode 100644 index 0000000..f982355 --- /dev/null +++ b/app.json @@ -0,0 +1,13 @@ +{ + "healthchecks": { + "api": [ + { + "type": "startup", + "name": "api check", + "description": "Checking if the app responds to the /health/ready endpoint", + "path": "/healthz", + "attempts": 3 + } + ] + } +} diff --git a/teufa/app.py b/teufa/app.py index 69b5877..a71344e 100644 --- a/teufa/app.py +++ b/teufa/app.py @@ -1,7 +1,5 @@ -from flask import Flask, g, request -from sqlalchemy import select +from flask import Flask -from . import db as dbm from .config import Config from .ext import db from .v1_api import bp as v1_bp @@ -13,14 +11,6 @@ def create_app(): db.init_app(app) - @app.before_request - def before_request(): - if not hasattr(g, "tenant"): - hostname = request.host.split(":")[0] - g.tenant = db.session.scalars( - select(dbm.Tenant).filter_by(hostname=hostname).limit(1) - ).first() - @app.teardown_request def teardown_request(exc): if exc: @@ -29,4 +19,8 @@ def create_app(): app.register_blueprint(v1_bp) + @app.route("/healthz") + def healthz(): + return {"status": "ok"} + return app diff --git a/teufa/v1_api/__init__.py b/teufa/v1_api/__init__.py index da7ec35..122e773 100644 --- a/teufa/v1_api/__init__.py +++ b/teufa/v1_api/__init__.py @@ -1,9 +1,23 @@ -from flask import Blueprint +from flask import Blueprint, Flask, g, request from flask_restful import Api +from sqlalchemy import select +from ..ext import db +from . import db as dbm from .flights import FlightCollectionResource, FlightResource bp = Blueprint("api", __name__, url_prefix="/api") + + +@bp.before_request +def before_request(): + if not hasattr(g, "tenant"): + hostname = request.host.split(":")[0] + g.tenant = db.session.scalars( + select(dbm.Tenant).filter_by(hostname=hostname).limit(1) + ).first() + + api = Api(bp) api.add_resource(FlightCollectionResource, "/v1/flights")