(self, verb: str)
| 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 |
no test coverage detected