123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- import logging
- import time
- from configs import dify_config
- from 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_app
- def 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 app
- def 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
|