[python/asyncio] explicitly close client session via async context manager (#5621)

This commit is contained in:
Tomasz Prus
2020-03-25 15:59:27 +01:00
committed by GitHub
parent 928d065bbf
commit 625c734cfe
7 changed files with 58 additions and 22 deletions

View File

@@ -81,13 +81,14 @@ class ApiClient(object):
self.user_agent = 'OpenAPI-Generator/1.0.0/python'
self.client_side_validation = configuration.client_side_validation
def __enter__(self):
async def __aenter__(self):
return self
def __exit__(self, exc_type, exc_value, traceback):
self.close()
async def __aexit__(self, exc_type, exc_value, traceback):
await self.close()
def close(self):
async def close(self):
await self.rest_client.close()
if self._pool:
self._pool.close()
self._pool.join()

View File

@@ -18,7 +18,6 @@ import ssl
import aiohttp
import certifi
import asyncio
# python 2 and python 3 compatibility library
from six.moves.urllib.parse import urlencode
@@ -85,8 +84,8 @@ class RESTClientObject(object):
connector=connector
)
def __del__(self):
asyncio.ensure_future(self.pool_manager.close())
async def close(self):
await self.pool_manager.close()
async def request(self, method, url, query_params=None, headers=None,
body=None, post_params=None, _preload_content=True,