import os import logging from flask import Flask from flask_sqlalchemy import SQLAlchemy from sqlalchemy.orm import DeclarativeBase from werkzeug.middleware.proxy_fix import ProxyFix # Configure logging logging.basicConfig(level=logging.DEBUG) class Base(DeclarativeBase): pass db = SQLAlchemy(model_class=Base) # create the app app = Flask(__name__) app.secret_key = os.environ.get("SESSION_SECRET", "dev-secret-key-change-in-production") app.wsgi_app = ProxyFix(app.wsgi_app, x_proto=1, x_host=1) # configure the database, relative to the app instance folder app.config["SQLALCHEMY_DATABASE_URI"] = os.environ.get( "DATABASE_URL", "sqlite:///dify_learning.db") app.config["SQLALCHEMY_ENGINE_OPTIONS"] = { "pool_recycle": 300, "pool_pre_ping": True, } # initialize the app with the extension db.init_app(app) # Import routes after app creation to avoid circular imports from routes import * with app.app_context(): # Make sure to import the models here or their tables won't be created import models db.create_all() if __name__ == '__main__': app.run(host='0.0.0.0', port=7860, debug=True)