MCPcopy Index your code
hub / github.com/PyGithub/PyGithub / __deferRequest

Method __deferRequest

github/Requester.py:1310–1329  ·  view source on GitHub ↗
(self, verb: str)

Source from the content-addressed store, hash-verified

1308 self.__recordRequestTime(verb)
1309
1310 def __deferRequest(self, verb: str) -> None:
1311 # Ensures at least self.__seconds_between_requests seconds have passed since any last request
1312 # and self.__seconds_between_writes seconds have passed since last write request (if verb refers to a write).
1313 # Uses self.__last_requests.
1314 requests = self.__last_requests.values()
1315 writes = [l for v, l in self.__last_requests.items() if v != "GET"]
1316
1317 last_request = max(requests) if requests else 0
1318 last_write = max(writes) if writes else 0
1319
1320 next_request = (last_request + self.__seconds_between_requests) if self.__seconds_between_requests else 0
1321 next_write = (last_write + self.__seconds_between_writes) if self.__seconds_between_writes else 0
1322
1323 next = next_request if verb == "GET" else max(next_request, next_write)
1324 defer = max(next - datetime.now(timezone.utc).timestamp(), 0)
1325 if defer > 0:
1326 if self.__logger is None:
1327 self.__logger = logging.getLogger(__name__)
1328 self.__logger.debug(f"sleeping {defer}s before next GitHub request")
1329 time.sleep(defer)
1330
1331 def __recordRequestTime(self, verb: str) -> None:
1332 # Updates self.__last_requests with current timestamp for given verb

Callers 1

__requestRawMethod · 0.95

Calls 4

nowMethod · 0.80
debugMethod · 0.80
sleepMethod · 0.80
timestampMethod · 0.45

Tested by

no test coverage detected