mirror of
https://github.com/RGBCube/GitHubWrapper
synced 2025-05-20 07:55:09 +00:00
General improvements to HTTPClient
This commit is contained in:
parent
afad2af776
commit
8a61ee6e8c
1 changed files with 13 additions and 17 deletions
|
@ -35,9 +35,9 @@ log = logging.getLogger("github")
|
|||
|
||||
|
||||
class RateLimits(NamedTuple):
|
||||
remaining: Optional[int]
|
||||
used: Optional[int]
|
||||
total: Optional[int]
|
||||
remaining: int
|
||||
used: int
|
||||
total: int
|
||||
reset_time: Optional[datetime]
|
||||
last_request: Optional[datetime]
|
||||
|
||||
|
@ -122,8 +122,7 @@ class HTTPClient:
|
|||
) -> Self:
|
||||
self = super(cls, cls).__new__(cls)
|
||||
|
||||
if not headers:
|
||||
headers = {}
|
||||
headers = headers or {}
|
||||
|
||||
headers.setdefault(
|
||||
"User-Agent",
|
||||
|
@ -131,15 +130,13 @@ class HTTPClient:
|
|||
f" 2.0.0a CPython/{platform.python_version()} aiohttp/{aiohttp_version}",
|
||||
)
|
||||
|
||||
self._rates = RateLimits(None, None, None, None, None)
|
||||
self.__headers = headers
|
||||
self.__auth = auth
|
||||
|
||||
self._last_ping = 0
|
||||
self._latency = 0
|
||||
|
||||
self.__session = ClientSession(headers=headers, auth=auth)
|
||||
|
||||
self._rates = RateLimits(60, 0, 60, None, None)
|
||||
|
||||
self._last_ping = float("-inf")
|
||||
self._latency = 0
|
||||
|
||||
return self
|
||||
|
||||
async def __aenter__(self) -> Self:
|
||||
|
@ -153,18 +150,17 @@ class HTTPClient:
|
|||
|
||||
@property
|
||||
def is_ratelimited(self) -> bool:
|
||||
remaining = self._rates.remaining
|
||||
return remaining is not None and remaining < 2
|
||||
return self._rates.remaining < 2
|
||||
|
||||
async def latency(self) -> float:
|
||||
last_ping = self._last_ping
|
||||
|
||||
# If there was no ping or the last ping was more than 5 seconds ago.
|
||||
if not last_ping or time.monotonic() > last_ping + 5 or self.is_ratelimited:
|
||||
# If there was no ping or the last ping was more than 5 seconds ago (or is currently ratelimited).
|
||||
if not self.is_ratelimited and time.monotonic() > last_ping + 5:
|
||||
self._last_ping = time.monotonic()
|
||||
|
||||
start = time.monotonic()
|
||||
await self.request("GET", "/")
|
||||
await self.get_github_api_root()
|
||||
self._latency = time.monotonic() - start
|
||||
|
||||
return self._latency
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue