optimize downalod waiting time logic (#1626)

This commit is contained in:
Shuchang Zheng
2025-01-23 22:04:32 +08:00
committed by GitHub
parent 516de4725f
commit b42a1900e2
2 changed files with 18 additions and 18 deletions

View File

@@ -10,6 +10,7 @@ INPUT_TEXT_TIMEOUT = 120000 # 2 minutes
PAGE_CONTENT_TIMEOUT = 300 # 5 mins PAGE_CONTENT_TIMEOUT = 300 # 5 mins
BUILDING_ELEMENT_TREE_TIMEOUT_MS = 60 * 1000 # 1 minute BUILDING_ELEMENT_TREE_TIMEOUT_MS = 60 * 1000 # 1 minute
BROWSER_CLOSE_TIMEOUT = 180 # 3 minute BROWSER_CLOSE_TIMEOUT = 180 # 3 minute
BROWSER_DOWNLOAD_MAX_WAIT_TIME = 120 # 2 minute
BROWSER_DOWNLOAD_TIMEOUT = 600 # 10 minute BROWSER_DOWNLOAD_TIMEOUT = 600 # 10 minute
DOWNLOAD_FILE_PREFIX = "downloads" DOWNLOAD_FILE_PREFIX = "downloads"
SAVE_DOWNLOADED_FILES_TIMEOUT = 180 SAVE_DOWNLOADED_FILES_TIMEOUT = 180

View File

@@ -16,6 +16,7 @@ from pydantic import BaseModel
from skyvern.config import settings from skyvern.config import settings
from skyvern.constants import ( from skyvern.constants import (
AUTO_COMPLETION_POTENTIAL_VALUES_COUNT, AUTO_COMPLETION_POTENTIAL_VALUES_COUNT,
BROWSER_DOWNLOAD_MAX_WAIT_TIME,
BROWSER_DOWNLOAD_TIMEOUT, BROWSER_DOWNLOAD_TIMEOUT,
DROPDOWN_MENU_MAX_DISTANCE, DROPDOWN_MENU_MAX_DISTANCE,
REPO_ROOT_DIR, REPO_ROOT_DIR,
@@ -474,14 +475,9 @@ async def handle_click_to_download_file_action(
) )
return [ActionFailure(e, download_triggered=False)] return [ActionFailure(e, download_triggered=False)]
# wait 5s to start downloading try:
LOG.info( async with asyncio.timeout(BROWSER_DOWNLOAD_MAX_WAIT_TIME):
"Sleep for 5s to let download finish", while True:
task_id=task.task_id,
step_id=step.step_id,
workflow_run_id=task.workflow_run_id,
)
await asyncio.sleep(5)
list_files_after = list_files_in_directory(download_dir) list_files_after = list_files_in_directory(download_dir)
LOG.info( LOG.info(
"Number of files in download directory after click", "Number of files in download directory after click",
@@ -491,8 +487,11 @@ async def handle_click_to_download_file_action(
step_id=step.step_id, step_id=step.step_id,
workflow_run_id=task.workflow_run_id, workflow_run_id=task.workflow_run_id,
) )
if len(list_files_after) > len(list_files_before):
break
await asyncio.sleep(1)
if len(list_files_after) <= len(list_files_before): except asyncio.TimeoutError:
LOG.warning( LOG.warning(
"No file to download after click", "No file to download after click",
task_id=task.task_id, task_id=task.task_id,