Browser streaming: add more verification checks for browser session (#4094)

This commit is contained in:
Jonathan Dobson
2025-11-25 14:18:15 -05:00
committed by GitHub
parent 43be44cce5
commit 285694cefe

View File

@@ -17,13 +17,13 @@ from __future__ import annotations
import asyncio import asyncio
import typing as t import typing as t
from datetime import datetime from datetime import datetime, timedelta
import structlog import structlog
from skyvern.config import settings from skyvern.config import settings
from skyvern.forge import app from skyvern.forge import app
from skyvern.forge.sdk.schemas.persistent_browser_sessions import AddressablePersistentBrowserSession from skyvern.forge.sdk.schemas.persistent_browser_sessions import AddressablePersistentBrowserSession, is_final_status
from skyvern.forge.sdk.schemas.tasks import Task, TaskStatus from skyvern.forge.sdk.schemas.tasks import Task, TaskStatus
from skyvern.forge.sdk.workflow.models.workflow import WorkflowRun, WorkflowRunStatus from skyvern.forge.sdk.workflow.models.workflow import WorkflowRun, WorkflowRunStatus
@@ -67,6 +67,34 @@ async def verify_browser_session(
) )
return None return None
if is_final_status(browser_session.status):
LOG.info(
"Browser session is invalid, as it is in a final state.",
browser_session_status=browser_session.status,
browser_session_id=browser_session_id,
organization_id=organization_id,
)
return None
started_at = browser_session.started_at
timeout_minutes = browser_session.timeout_minutes
if started_at and timeout_minutes:
current_time = datetime.utcnow()
times_out_at = started_at + timedelta(minutes=timeout_minutes)
if current_time > times_out_at:
LOG.info(
"Browser session invalid, as it has timed out, but is still in a non-final status. This is likely a bug!",
browser_session_id=browser_session_id,
organization_id=organization_id,
timeout_minutes=timeout_minutes,
started_at=started_at.isoformat(),
now=current_time.isoformat(),
times_out_at=times_out_at.isoformat(),
)
return None
browser_address = browser_session.browser_address browser_address = browser_session.browser_address
if not browser_address: if not browser_address: