Ctrl K
ComunidadGuías…

maintenance_app.py

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
from app import config

from flask import Flask, request, jsonify, render_template
from werkzeug.middleware.proxy_fix import ProxyFix


def create_maintenance_app() -> Flask:
    """Minimal Flask app used when MAINTENANCE_MODE is set at startup.
    Requires no database connection."""
    app = Flask(__name__)
    app.wsgi_app = ProxyFix(app.wsgi_app, x_for=1, x_host=1)

    @app.route("/health", methods=["GET"])
    def healthcheck():
        return "success", 200

    @app.before_request
    def maintenance():
        if (
            request.path.startswith("/health")
            or request.path.startswith("/admin")
            or request.path.startswith("/static")
        ):
            return
        if request.path.startswith("/api/"):
            return (
                jsonify(
                    {"error": "Service is under maintenance, please try again later"}
                ),
                503,
            )
        return render_template("error/503.html"), 503

    @app.context_processor
    def inject_stage_and_region():
        import arrow

        now = arrow.now()
        return dict(
            YEAR=now.year,
            NOW=now,
            URL=config.URL,
        )

    return app