Files
aiagent/saars/backend/app/__init__.py

51 lines
1.5 KiB
Python
Raw Normal View History

2026-03-07 09:01:00 +08:00
"""
Flask application factory for chat platform backend.
"""
import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_jwt_extended import JWTManager
from flask_cors import CORS
from flask_socketio import SocketIO
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address
from redis import Redis
from app.config import config_by_name
db = SQLAlchemy()
migrate = Migrate()
jwt = JWTManager()
socketio = SocketIO(cors_allowed_origins="*", async_mode="eventlet")
limiter = Limiter(key_func=get_remote_address, default_limits=["200 per day", "50 per hour"])
def create_app(config_name=None):
config_name = config_name or os.getenv("FLASK_ENV", "development")
app = Flask(__name__)
app.config.from_object(config_by_name[config_name])
CORS(app, resources={r"/api/*": {"origins": "*"}}, supports_credentials=True)
db.init_app(app)
migrate.init_app(app, db)
jwt.init_app(app)
limiter.init_app(app)
socketio.init_app(app, message_queue=app.config.get("CELERY_BROKER_URL") or None)
app.redis = Redis.from_url(app.config["REDIS_URL"]) if app.config.get("REDIS_URL") else None
from app.api import register_blueprints
register_blueprints(app)
import app.socket_events # noqa: F401 - register SocketIO handlers
from app.admin import init_admin
init_admin(app)
@app.route("/health")
def health():
return {"status": "healthy"}, 200
return app