| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 | import loggingimport timefrom configs import dify_configfrom dify_app import DifyApp# ----------------------------# Application Factory Function# ----------------------------def create_flask_app_with_configs() -> DifyApp:    """    create a raw flask app    with configs loaded from .env file    """    dify_app = DifyApp(__name__)    dify_app.config.from_mapping(dify_config.model_dump())    return dify_appdef create_app() -> DifyApp:    start_time = time.perf_counter()    app = create_flask_app_with_configs()    initialize_extensions(app)    end_time = time.perf_counter()    if dify_config.DEBUG:        logging.info(f"Finished create_app ({round((end_time - start_time) * 1000, 2)} ms)")    return appdef initialize_extensions(app: DifyApp):    from extensions import (        ext_app_metrics,        ext_blueprints,        ext_celery,        ext_code_based_extension,        ext_commands,        ext_compress,        ext_database,        ext_hosting_provider,        ext_import_modules,        ext_logging,        ext_login,        ext_mail,        ext_migrate,        ext_proxy_fix,        ext_redis,        ext_sentry,        ext_set_secretkey,        ext_storage,        ext_timezone,        ext_warnings,    )    extensions = [        ext_timezone,        ext_logging,        ext_warnings,        ext_import_modules,        ext_set_secretkey,        ext_compress,        ext_code_based_extension,        ext_database,        ext_app_metrics,        ext_migrate,        ext_redis,        ext_storage,        ext_celery,        ext_login,        ext_mail,        ext_hosting_provider,        ext_sentry,        ext_proxy_fix,        ext_blueprints,        ext_commands,    ]    for ext in extensions:        short_name = ext.__name__.split(".")[-1]        is_enabled = ext.is_enabled() if hasattr(ext, "is_enabled") else True        if not is_enabled:            if dify_config.DEBUG:                logging.info(f"Skipped {short_name}")            continue        start_time = time.perf_counter()        ext.init_app(app)        end_time = time.perf_counter()        if dify_config.DEBUG:            logging.info(f"Loaded {short_name} ({round((end_time - start_time) * 1000, 2)} ms)")def create_migrations_app():    app = create_flask_app_with_configs()    from extensions import ext_database, ext_migrate    # Initialize only required extensions    ext_database.init_app(app)    ext_migrate.init_app(app)    return app
 |