Initialize app at runtime instead of import time (#4024)

This commit is contained in:
Stanislav Novosad
2025-11-18 17:56:58 -07:00
committed by GitHub
parent f7e68141eb
commit 0efae234ab
14 changed files with 319 additions and 183 deletions

View File

@@ -0,0 +1,28 @@
import structlog
from skyvern.config import settings
from skyvern.forge import set_force_app_instance
from skyvern.forge.forge_app import ForgeApp, create_forge_app
LOG = structlog.get_logger()
def start_forge_app() -> ForgeApp:
force_app_instance = create_forge_app()
set_force_app_instance(force_app_instance)
if settings.ADDITIONAL_MODULES:
for module in settings.ADDITIONAL_MODULES:
LOG.info("Loading additional module to set up api app", module=module)
app_module = __import__(module)
configure_app_fn = getattr(app_module, "configure_app", None)
if not configure_app_fn:
raise RuntimeError(f"Missing configure_app function in {module}")
configure_app_fn(force_app_instance)
LOG.info(
"Additional modules loaded to set up api app",
modules=settings.ADDITIONAL_MODULES,
)
return force_app_instance