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
BUILDING_ELEMENT_TREE_TIMEOUT_MS = 60 * 1000 # 1 minute
BROWSER_CLOSE_TIMEOUT = 180 # 3 minute
BROWSER_DOWNLOAD_MAX_WAIT_TIME = 120 # 2 minute
BROWSER_DOWNLOAD_TIMEOUT = 600 # 10 minute
DOWNLOAD_FILE_PREFIX = "downloads"
SAVE_DOWNLOADED_FILES_TIMEOUT = 180

View File

@@ -16,6 +16,7 @@ from pydantic import BaseModel
from skyvern.config import settings
from skyvern.constants import (
AUTO_COMPLETION_POTENTIAL_VALUES_COUNT,
BROWSER_DOWNLOAD_MAX_WAIT_TIME,
BROWSER_DOWNLOAD_TIMEOUT,
DROPDOWN_MENU_MAX_DISTANCE,
REPO_ROOT_DIR,
@@ -474,25 +475,23 @@ async def handle_click_to_download_file_action(
)
return [ActionFailure(e, download_triggered=False)]
# wait 5s to start downloading
LOG.info(
"Sleep for 5s to let download finish",
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)
LOG.info(
"Number of files in download directory after click",
num_downloaded_files_after=len(list_files_after),
download_dir=download_dir,
task_id=task.task_id,
step_id=step.step_id,
workflow_run_id=task.workflow_run_id,
)
try:
async with asyncio.timeout(BROWSER_DOWNLOAD_MAX_WAIT_TIME):
while True:
list_files_after = list_files_in_directory(download_dir)
LOG.info(
"Number of files in download directory after click",
num_downloaded_files_after=len(list_files_after),
download_dir=download_dir,
task_id=task.task_id,
step_id=step.step_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(
"No file to download after click",
task_id=task.task_id,