""" Flask extensions initialization Centralized extension management for the application """ from flask_sqlalchemy import SQLAlchemy from flask_bcrypt import Bcrypt from flask_login import LoginManager from flask_migrate import Migrate from flask_caching import Cache from flask_cors import CORS from sqlalchemy import event from sqlalchemy.engine import Engine import sqlite3 # Initialize extensions (will be bound to app in create_app) db = SQLAlchemy() bcrypt = Bcrypt() login_manager = LoginManager() migrate = Migrate() cache = Cache() cors = CORS() # Configure login manager login_manager.login_view = 'auth.login' login_manager.login_message = 'Please log in to access this page.' login_manager.login_message_category = 'info' @event.listens_for(Engine, "connect") def _set_sqlite_pragma(dbapi_connection, connection_record): """Enable WAL mode and sane concurrency settings for SQLite. WAL lets readers and writers operate concurrently, which prevents 'database is locked' errors when running under multi-worker Gunicorn. """ if isinstance(dbapi_connection, sqlite3.Connection): cursor = dbapi_connection.cursor() cursor.execute("PRAGMA journal_mode=WAL") cursor.execute("PRAGMA busy_timeout=5000") cursor.execute("PRAGMA synchronous=NORMAL") cursor.close()