make browser download timeout configurable for blocks and tasks (#3619)
This commit is contained in:
@@ -172,6 +172,7 @@ class AgentDB:
|
||||
extra_http_headers: dict[str, str] | None = None,
|
||||
browser_session_id: str | None = None,
|
||||
browser_address: str | None = None,
|
||||
download_timeout: float | None = None,
|
||||
) -> Task:
|
||||
try:
|
||||
async with self.Session() as session:
|
||||
@@ -203,6 +204,7 @@ class AgentDB:
|
||||
extra_http_headers=extra_http_headers,
|
||||
browser_session_id=browser_session_id,
|
||||
browser_address=browser_address,
|
||||
download_timeout=download_timeout,
|
||||
)
|
||||
session.add(new_task)
|
||||
await session.commit()
|
||||
|
||||
@@ -109,6 +109,7 @@ class TaskModel(Base):
|
||||
)
|
||||
model = Column(JSON, nullable=True)
|
||||
browser_address = Column(String, nullable=True)
|
||||
download_timeout = Column(Numeric, nullable=True)
|
||||
|
||||
|
||||
class StepModel(Base):
|
||||
|
||||
@@ -158,6 +158,7 @@ def convert_to_task(task_obj: TaskModel, debug_enabled: bool = False, workflow_p
|
||||
max_screenshot_scrolls=task_obj.max_screenshot_scrolling_times,
|
||||
browser_session_id=task_obj.browser_session_id,
|
||||
browser_address=task_obj.browser_address,
|
||||
download_timeout=task_obj.download_timeout,
|
||||
)
|
||||
return task
|
||||
|
||||
|
||||
@@ -113,6 +113,11 @@ class TaskBase(BaseModel):
|
||||
description="The CDP address for the task.",
|
||||
examples=["http://127.0.0.1:9222", "ws://127.0.0.1:9222/devtools/browser/1234567890"],
|
||||
)
|
||||
download_timeout: float | None = Field(
|
||||
default=None,
|
||||
description="The maximum time to wait for downloads to complete, in minutes. If not set, defaults to BROWSER_DOWNLOAD_TIMEOUT minutes.",
|
||||
examples=[15.0],
|
||||
)
|
||||
|
||||
|
||||
class TaskRequest(TaskBase):
|
||||
|
||||
@@ -422,6 +422,7 @@ class BaseTaskBlock(Block):
|
||||
cache_actions: bool = False
|
||||
complete_verification: bool = True
|
||||
include_action_history_in_verification: bool = False
|
||||
download_timeout: float | None = None # minutes
|
||||
|
||||
def get_all_parameters(
|
||||
self,
|
||||
@@ -631,6 +632,7 @@ class BaseTaskBlock(Block):
|
||||
failure_reason=str(e),
|
||||
)
|
||||
raise e
|
||||
|
||||
try:
|
||||
# add screenshot artifact for the first task
|
||||
screenshot = await browser_state.take_fullpage_screenshot(
|
||||
|
||||
@@ -2490,6 +2490,7 @@ class WorkflowService:
|
||||
cache_actions=block_yaml.cache_actions,
|
||||
complete_on_download=True,
|
||||
complete_verification=True,
|
||||
download_timeout=block_yaml.download_timeout,
|
||||
)
|
||||
elif block_yaml.block_type == BlockType.TaskV2:
|
||||
return TaskV2Block(
|
||||
|
||||
Reference in New Issue
Block a user