Add app.REPLICA_DATABASE (#4289)

This commit is contained in:
Stanislav Novosad
2025-12-12 17:59:01 -07:00
committed by GitHub
parent e9f4632ff7
commit a902fa7a6e
7 changed files with 13 additions and 5 deletions

View File

@@ -59,6 +59,7 @@ class Settings(BaseSettings):
if platform.system() == "Windows" if platform.system() == "Windows"
else "postgresql+psycopg://skyvern@localhost/skyvern" else "postgresql+psycopg://skyvern@localhost/skyvern"
) )
DATABASE_REPLICA_STRING: str | None = None
DATABASE_STATEMENT_TIMEOUT_MS: int = 60000 DATABASE_STATEMENT_TIMEOUT_MS: int = 60000
DISABLE_CONNECTION_POOL: bool = False DISABLE_CONNECTION_POOL: bool = False
PROMPT_ACTION_HISTORY_WINDOW: int = 1 PROMPT_ACTION_HISTORY_WINDOW: int = 1

View File

@@ -21,7 +21,7 @@ from skyvern.forge.sdk.artifact.storage.factory import StorageFactory
from skyvern.forge.sdk.artifact.storage.s3 import S3Storage from skyvern.forge.sdk.artifact.storage.s3 import S3Storage
from skyvern.forge.sdk.cache.base import BaseCache from skyvern.forge.sdk.cache.base import BaseCache
from skyvern.forge.sdk.cache.factory import CacheFactory from skyvern.forge.sdk.cache.factory import CacheFactory
from skyvern.forge.sdk.db.client import AgentDB from skyvern.forge.sdk.db.agent_db import AgentDB
from skyvern.forge.sdk.experimentation.providers import BaseExperimentationProvider, NoOpExperimentationProvider from skyvern.forge.sdk.experimentation.providers import BaseExperimentationProvider, NoOpExperimentationProvider
from skyvern.forge.sdk.schemas.credentials import CredentialVaultType from skyvern.forge.sdk.schemas.credentials import CredentialVaultType
from skyvern.forge.sdk.schemas.organizations import AzureClientSecretCredential, Organization from skyvern.forge.sdk.schemas.organizations import AzureClientSecretCredential, Organization
@@ -44,6 +44,7 @@ class ForgeApp:
SETTINGS_MANAGER: Settings SETTINGS_MANAGER: Settings
DATABASE: AgentDB DATABASE: AgentDB
REPLICA_DATABASE: AgentDB
STORAGE: BaseStorage STORAGE: BaseStorage
CACHE: BaseCache CACHE: BaseCache
ARTIFACT_MANAGER: ArtifactManager ARTIFACT_MANAGER: ArtifactManager
@@ -93,6 +94,12 @@ def create_forge_app() -> ForgeApp:
app.SETTINGS_MANAGER = settings app.SETTINGS_MANAGER = settings
app.DATABASE = AgentDB(settings.DATABASE_STRING, debug_enabled=settings.DEBUG_MODE) app.DATABASE = AgentDB(settings.DATABASE_STRING, debug_enabled=settings.DEBUG_MODE)
if settings.DATABASE_REPLICA_STRING and settings.DATABASE_REPLICA_STRING != settings.DATABASE_STRING:
app.REPLICA_DATABASE = AgentDB(settings.DATABASE_REPLICA_STRING, debug_enabled=settings.DEBUG_MODE)
else:
app.REPLICA_DATABASE = app.DATABASE
if settings.SKYVERN_STORAGE_TYPE == "s3": if settings.SKYVERN_STORAGE_TYPE == "s3":
StorageFactory.set_storage(S3Storage()) StorageFactory.set_storage(S3Storage())
app.STORAGE = StorageFactory.get_storage() app.STORAGE = StorageFactory.get_storage()

View File

@@ -4,7 +4,7 @@ import pytest
import pytest_asyncio import pytest_asyncio
from sqlalchemy.ext.asyncio import create_async_engine from sqlalchemy.ext.asyncio import create_async_engine
from skyvern.forge.sdk.db.client import AgentDB from skyvern.forge.sdk.db.agent_db import AgentDB
from skyvern.forge.sdk.db.models import Base from skyvern.forge.sdk.db.models import Base

View File

@@ -2,7 +2,7 @@ import asyncio
from structlog import get_logger from structlog import get_logger
from skyvern.forge.sdk.db.client import AgentDB from skyvern.forge.sdk.db.agent_db import AgentDB
from skyvern.forge.sdk.schemas.persistent_browser_sessions import PersistentBrowserSession from skyvern.forge.sdk.schemas.persistent_browser_sessions import PersistentBrowserSession
LOG = get_logger(__name__) LOG = get_logger(__name__)

View File

@@ -13,7 +13,7 @@ from pydantic import ValidationError
from skyvern.config import settings from skyvern.config import settings
from skyvern.forge import app from skyvern.forge import app
from skyvern.forge.sdk.core import skyvern_context from skyvern.forge.sdk.core import skyvern_context
from skyvern.forge.sdk.db.client import AgentDB from skyvern.forge.sdk.db.agent_db import AgentDB
from skyvern.forge.sdk.models import TokenPayload from skyvern.forge.sdk.models import TokenPayload
from skyvern.forge.sdk.schemas.organizations import Organization, OrganizationAuthToken, OrganizationAuthTokenType from skyvern.forge.sdk.schemas.organizations import Organization, OrganizationAuthToken, OrganizationAuthTokenType

View File

@@ -9,7 +9,7 @@ from playwright._impl._errors import TargetClosedError
from skyvern.config import settings from skyvern.config import settings
from skyvern.exceptions import BrowserSessionNotRenewable, MissingBrowserAddressError from skyvern.exceptions import BrowserSessionNotRenewable, MissingBrowserAddressError
from skyvern.forge.sdk.db.client import AgentDB from skyvern.forge.sdk.db.agent_db import AgentDB
from skyvern.forge.sdk.db.polls import wait_on_persistent_browser_address from skyvern.forge.sdk.db.polls import wait_on_persistent_browser_address
from skyvern.forge.sdk.schemas.persistent_browser_sessions import ( from skyvern.forge.sdk.schemas.persistent_browser_sessions import (
PersistentBrowserSession, PersistentBrowserSession,