Skip to content

Commit fcf4299

Browse files
Use context manager for per-operation websocket connection in DockerExecutor (#1750)
1 parent f570ed5 commit fcf4299

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

src/smolagents/remote_executors.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,6 @@ def __init__(
370370
super().__init__(additional_imports, logger)
371371
try:
372372
import docker
373-
from websocket import create_connection
374373
except ModuleNotFoundError:
375374
raise ModuleNotFoundError(
376375
"Please install 'docker' extra to use DockerExecutor: `pip install 'smolagents[docker]'`"
@@ -444,9 +443,7 @@ def __init__(
444443

445444
# Create new kernel via HTTP
446445
self.kernel_id = _create_kernel_http(f"{self.base_url}/api/kernels", self.logger)
447-
448-
ws_url = f"ws://{host}:{port}/api/kernels/{self.kernel_id}/channels"
449-
self.ws = create_connection(ws_url)
446+
self.ws_url = f"ws://{host}:{port}/api/kernels/{self.kernel_id}/channels"
450447

451448
self.installed_packages = self.install_packages(additional_imports)
452449
self.logger.log(
@@ -458,7 +455,10 @@ def __init__(
458455
raise RuntimeError(f"Failed to initialize Jupyter kernel: {e}") from e
459456

460457
def run_code_raise_errors(self, code: str) -> CodeOutput:
461-
return _websocket_run_code_raise_errors(code, self.ws, self.logger)
458+
from websocket import create_connection
459+
460+
with closing(create_connection(self.ws_url)) as ws:
461+
return _websocket_run_code_raise_errors(code, ws, self.logger)
462462

463463
def cleanup(self):
464464
"""Clean up the Docker container and resources."""

0 commit comments

Comments
 (0)