storages: use asynccontextmanager instead of sync to close client (#1521)
Follow-up to #1481, use the asyncontextmanager with `async with` as only used in async functions (which call run_in_executor)
This commit is contained in:
		
							parent
							
								
									b2a5dbf2cd
								
							
						
					
					
						commit
						65fec64197
					
				| @ -12,7 +12,7 @@ from typing import ( | ||||
|     TYPE_CHECKING, | ||||
| ) | ||||
| from urllib.parse import urlsplit | ||||
| from contextlib import asynccontextmanager, contextmanager | ||||
| from contextlib import asynccontextmanager | ||||
| 
 | ||||
| import asyncio | ||||
| import heapq | ||||
| @ -276,8 +276,10 @@ class StorageOps: | ||||
|         ) as client: | ||||
|             yield client, bucket, key | ||||
| 
 | ||||
|     @contextmanager | ||||
|     def get_sync_client(self, org: Organization) -> Iterator[tuple[S3Client, str, str]]: | ||||
|     @asynccontextmanager | ||||
|     async def get_sync_client( | ||||
|         self, org: Organization | ||||
|     ) -> AsyncIterator[tuple[S3Client, str, str]]: | ||||
|         """context manager for s3 client""" | ||||
|         storage = self.get_org_primary_storage(org) | ||||
| 
 | ||||
| @ -517,7 +519,7 @@ class StorageOps: | ||||
|         contexts: List[str], | ||||
|     ) -> Iterator[bytes]: | ||||
|         """Return filtered stream of logs from specified WACZs sorted by timestamp""" | ||||
|         with self.get_sync_client(org) as (client, bucket, key): | ||||
|         async with self.get_sync_client(org) as (client, bucket, key): | ||||
|             loop = asyncio.get_event_loop() | ||||
| 
 | ||||
|             resp = await loop.run_in_executor( | ||||
| @ -665,7 +667,7 @@ class StorageOps: | ||||
|     ) -> Iterator[bytes]: | ||||
|         """return an iter for downloading a stream nested wacz file | ||||
|         from list of files""" | ||||
|         with self.get_sync_client(org) as (client, bucket, key): | ||||
|         async with self.get_sync_client(org) as (client, bucket, key): | ||||
|             loop = asyncio.get_event_loop() | ||||
| 
 | ||||
|             resp = await loop.run_in_executor( | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user