Skip to content

Commit 05282ba

Browse files
committed
Add timeout to browser use
1 parent 4aee61b commit 05282ba

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

patchwork/steps/BrowserUse/BrowserUse.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -99,10 +99,16 @@ def run(self) -> dict:
9999

100100
# Run the agent in an event loop
101101
loop = asyncio.new_event_loop()
102-
self.history = loop.run_until_complete(agent.run())
103-
loop.run_until_complete(browser_context.close())
104-
loop.run_until_complete(browser_context.browser.close())
105-
loop.close()
102+
timeout = self.inputs.get("timeout", 600) # default timeout of 10 minutes
103+
try:
104+
self.history = loop.run_until_complete(asyncio.wait_for(agent.run(), timeout=timeout))
105+
except asyncio.TimeoutError:
106+
logger.error(f"Agent timed out after {timeout} seconds")
107+
raise
108+
finally:
109+
loop.run_until_complete(browser_context.close())
110+
loop.run_until_complete(browser_context.browser.close())
111+
loop.close()
106112

107113
# Format results as JSON if schema provided
108114
if "example_json" in self.inputs:

patchwork/steps/BrowserUse/typed.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class BrowserUseInputs(__BrowserUseInputsRequired, total=False):
1818
initial_actions: Optional[List[Dict[str, Dict[str, Any]]]]
1919
downloads_path: Optional[str]
2020
use_vision: Optional[bool]
21+
timeout: Optional[int] # optional timeout in seconds, defaults to 600 if not provided
2122

2223

2324
class BrowserUseOutputs(TypedDict):

0 commit comments

Comments
 (0)