summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Turner <jturner.usa@gmail.com>2025-09-26 02:31:33 -0400
committerJohn Turner <jturner.usa@gmail.com>2025-09-26 02:31:33 -0400
commitc214f09291904187396975c3e8cda35db506e8e9 (patch)
treee83509a29393841ee20b09c0239cd6546bd4cc65
parentda7582577067312846ce3bca3d73f5bfbddbab8a (diff)
downloadpypaste-c214f09291904187396975c3e8cda35db506e8e9.tar.gz
use ClientSession context manager to prevent unclosed clients
-rw-r--r--pypaste/server/s3/bucket.py43
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}"
+ )