Skip to content

Commit 4e174ed

Browse files
fix(stream): close the file handle when save_as fails (#3203)
1 parent a7e9a2a commit 4e174ed

1 file changed

Lines changed: 10 additions & 8 deletions

File tree

‎playwright/_impl/_stream.py‎

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,16 @@ def __init__(
2727

2828
async def save_as(self, path: Union[str, Path]) -> None:
2929
file = await self._loop.run_in_executor(None, lambda: open(path, "wb"))
30-
while True:
31-
binary = await self._channel.send("read", None, {"size": 1024 * 1024})
32-
if not binary:
33-
break
34-
await self._loop.run_in_executor(
35-
None, lambda: file.write(base64.b64decode(binary))
36-
)
37-
await self._loop.run_in_executor(None, lambda: file.close())
30+
try:
31+
while True:
32+
binary = await self._channel.send("read", None, {"size": 1024 * 1024})
33+
if not binary:
34+
break
35+
await self._loop.run_in_executor(
36+
None, lambda: file.write(base64.b64decode(binary))
37+
)
38+
finally:
39+
await self._loop.run_in_executor(None, lambda: file.close())
3840

3941
async def read_all(self) -> bytes:
4042
binary = b""

0 commit comments

Comments
 (0)