factory.py
1.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
"""Application factory for the BettaFish web API."""
from __future__ import annotations
from pathlib import Path
from flask import Flask
from apps.web_api.bootstrap.blueprints import register_blueprints
from apps.web_api.bootstrap.logging import configure_runtime_environment, patch_eventlet_disconnect_logging
from apps.web_api.bootstrap.socketio import create_socketio
from services.shared.logging import bind_logger
PROJECT_ROOT = Path(__file__).resolve().parents[2]
STATIC_DIR = PROJECT_ROOT / "static"
TEMPLATE_DIR = PROJECT_ROOT / "templates"
SECRET_KEY = "Dedicated-to-creating-a-concise-and-versatile-public-opinion-analysis-platform"
def create_app() -> tuple[Flask, object]:
"""Create the Flask app and Socket.IO server."""
configure_runtime_environment()
patch_eventlet_disconnect_logging()
startup_logger = bind_logger(source="web_api.factory")
app = Flask(
__name__,
static_folder=str(STATIC_DIR),
template_folder=str(TEMPLATE_DIR),
)
app.config["SECRET_KEY"] = SECRET_KEY
socketio = create_socketio(app)
register_blueprints(app)
startup_logger.info("Web API application factory initialized")
return app, socketio