From e86756cb397fcb6f7bb3432bdf4b9a8fd320aec6 Mon Sep 17 00:00:00 2001 From: -LAN- Date: Wed, 18 Dec 2024 09:05:31 +0800 Subject: [PATCH] feat(app_factory): speed up api startup (#11762) Signed-off-by: -LAN- --- api/app.py | 27 ++++++++++++++++++++++----- api/app_factory.py | 11 +++++++++++ 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/api/app.py b/api/app.py index 996e2e890f..c6a0829080 100644 --- a/api/app.py +++ b/api/app.py @@ -1,13 +1,30 @@ -from app_factory import create_app -from libs import threadings_utils, version_utils +from libs import version_utils # preparation before creating app version_utils.check_supported_python_version() -threadings_utils.apply_gevent_threading_patch() + + +def is_db_command(): + import sys + + if len(sys.argv) > 1 and sys.argv[0].endswith("flask") and sys.argv[1] == "db": + return True + return False + # create app -app = create_app() -celery = app.extensions["celery"] +if is_db_command(): + from app_factory import create_migrations_app + + app = create_migrations_app() +else: + from app_factory import create_app + from libs import threadings_utils + + threadings_utils.apply_gevent_threading_patch() + + app = create_app() + celery = app.extensions["celery"] if __name__ == "__main__": app.run(host="0.0.0.0", port=5001) diff --git a/api/app_factory.py b/api/app_factory.py index 7dc08c4d93..f6c6369e8f 100644 --- a/api/app_factory.py +++ b/api/app_factory.py @@ -98,3 +98,14 @@ def initialize_extensions(app: DifyApp): 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