PamGram/modules/apihelper/client/base/httpxrequest.py
洛水居室 3839d00a95
Update Unit Test
Co-authored-by: xtaodada <xtao@xtaolink.cn>
2023-02-11 16:29:11 +08:00

35 lines
966 B
Python

from contextlib import AbstractAsyncContextManager
from types import TracebackType
from typing import Optional, Type
import httpx
__all__ = ("HTTPXRequest",)
class HTTPXRequest(AbstractAsyncContextManager):
def __init__(self, *args, headers=None, **kwargs):
self._client = httpx.AsyncClient(headers=headers, *args, **kwargs)
async def __aenter__(self):
try:
await self.initialize()
return self
except Exception as exc:
await self.shutdown()
raise exc
async def __aexit__(
self, exc_type: Optional[Type[BaseException]], exc_val: Optional[BaseException], exc_tb: Optional[TracebackType]
) -> None:
await self.initialize()
async def initialize(self):
if self._client.is_closed:
self._client = httpx.AsyncClient()
async def shutdown(self):
if self._client.is_closed:
return
await self._client.aclose()