Files
Dorod-Sky/skyvern/forge/__main__.py

47 lines
1.4 KiB
Python

import os
import sys
import structlog
import uvicorn
from dotenv import load_dotenv
from skyvern import analytics
from skyvern.config import settings
LOG = structlog.stdlib.get_logger()
if __name__ == "__main__":
analytics.capture("skyvern-oss-run-server")
port = settings.PORT
LOG.info("Agent server starting.", host="0.0.0.0", port=port)
load_dotenv()
# Disable reload on Windows - uvicorn forces WindowsSelectorEventLoopPolicy when reload=True,
# but Windows needs WindowsProactorEventLoopPolicy for async subprocess operations
reload = settings.ENV == "local" and sys.platform != "win32"
# Configure reload settings
# Convert TEMP_PATH to relative path if it's absolute to avoid pathlib.glob() issues
temp_path_for_excludes = (
os.path.relpath(settings.TEMP_PATH) if os.path.isabs(settings.TEMP_PATH) else settings.TEMP_PATH
)
artifact_path_for_excludes = (
os.path.relpath(settings.ARTIFACT_STORAGE_PATH)
if os.path.isabs(settings.ARTIFACT_STORAGE_PATH)
else settings.ARTIFACT_STORAGE_PATH
)
uvicorn.run(
"skyvern.forge.api_app:create_api_app",
host="0.0.0.0",
port=port,
log_level="info",
reload=reload,
reload_excludes=[
f"{temp_path_for_excludes}/**/*.py",
f"{artifact_path_for_excludes}/{settings.ENV}/**/scripts/**/**/*.py",
],
factory=True,
)