diff options
| author | John Turner <jturner.usa@gmail.com> | 2025-09-26 02:31:33 -0400 |
|---|---|---|
| committer | John Turner <jturner.usa@gmail.com> | 2025-09-26 02:31:33 -0400 |
| commit | c214f09291904187396975c3e8cda35db506e8e9 (patch) | |
| tree | e83509a29393841ee20b09c0239cd6546bd4cc65 | |
| parent | da7582577067312846ce3bca3d73f5bfbddbab8a (diff) | |
| download | pypaste-c214f09291904187396975c3e8cda35db506e8e9.tar.gz | |
use ClientSession context manager to prevent unclosed clients
| -rw-r--r-- | pypaste/server/s3/bucket.py | 43 |
1 files changed, 23 insertions, 20 deletions
diff --git a/pypaste/server/s3/bucket.py b/pypaste/server/s3/bucket.py index 823d959..484faa6 100644 --- a/pypaste/server/s3/bucket.py +++ b/pypaste/server/s3/bucket.py @@ -63,16 +63,17 @@ class Bucket: url = f"https://{self.endpoint}/{self.bucket}/{key}" - async with aiohttp.ClientSession().get(url, headers=headers) as get: - match get.status: - case 200: - return await get.read() - case 404: - return None - case _: - raise Exception( - f"failed to get {self.endpoint}/{self.bucket}/{key} with status {get.status}" - ) + async with aiohttp.ClientSession() as client: + async with client.get(url, headers=headers) as get: + match get.status: + case 200: + return await get.read() + case 404: + return None + case _: + raise Exception( + f"failed to get {self.endpoint}/{self.bucket}/{key} with status {get.status}" + ) async def put(self, key: str, data: bytes) -> None: payload_hash = sha256(data).hexdigest() @@ -105,11 +106,12 @@ class Bucket: url = f"https://{self.endpoint}/{self.bucket}/{key}" - async with aiohttp.ClientSession().put(url, headers=headers, data=data) as put: - if put.status != 200: - raise Exception( - f"failed put {self.endpoint}/{self.bucket}/{key} with {put.status}" - ) + async with aiohttp.ClientSession() as client: + async with client.put(url, headers=headers, data=data) as put: + if put.status != 200: + raise Exception( + f"failed put {self.endpoint}/{self.bucket}/{key} with {put.status}" + ) async def delete(self, key: str) -> None: now = datetime.now(UTC) @@ -139,8 +141,9 @@ class Bucket: url = f"https://{self.endpoint}/{self.bucket}/{key}" - async with aiohttp.ClientSession().delete(url, headers=headers) as delete: - if delete.status != 204: - raise Exception( - f"failed to delete {self.endpoint}/{self.bucket}/{key} with {delete.status}" - ) + async with aiohttp.ClientSession() as client: + async with client.delete(url, headers=headers) as delete: + if delete.status != 204: + raise Exception( + f"failed to delete {self.endpoint}/{self.bucket}/{key} with {delete.status}" + ) |
