|
6 | 6 | import gzip |
7 | 7 | import time |
8 | 8 |
|
9 | | -from datetime import datetime, timedelta |
| 9 | +from datetime import timedelta |
10 | 10 | from collections import defaultdict |
11 | 11 |
|
12 | 12 | from sentry_sdk.utils import Dsn, logger, capture_internal_exceptions, json_dumps |
13 | 13 | from sentry_sdk.worker import BackgroundWorker |
14 | 14 | from sentry_sdk.envelope import Envelope, Item, PayloadRef |
15 | 15 |
|
| 16 | +from sentry_sdk._compat import datetime_utcnow |
16 | 17 | from sentry_sdk._types import TYPE_CHECKING |
17 | 18 |
|
18 | 19 | if TYPE_CHECKING: |
| 20 | + from datetime import datetime |
19 | 21 | from typing import Any |
20 | 22 | from typing import Callable |
21 | 23 | from typing import Dict |
@@ -122,7 +124,7 @@ def __del__(self): |
122 | 124 | def _parse_rate_limits(header, now=None): |
123 | 125 | # type: (Any, Optional[datetime]) -> Iterable[Tuple[DataCategory, datetime]] |
124 | 126 | if now is None: |
125 | | - now = datetime.utcnow() |
| 127 | + now = datetime_utcnow() |
126 | 128 |
|
127 | 129 | for limit in header.split(","): |
128 | 130 | try: |
@@ -209,7 +211,7 @@ def _update_rate_limits(self, response): |
209 | 211 | # sentries if a proxy in front wants to globally slow things down. |
210 | 212 | elif response.status == 429: |
211 | 213 | logger.warning("Rate-limited via 429") |
212 | | - self._disabled_until[None] = datetime.utcnow() + timedelta( |
| 214 | + self._disabled_until[None] = datetime_utcnow() + timedelta( |
213 | 215 | seconds=self._retry.get_retry_after(response) or 60 |
214 | 216 | ) |
215 | 217 |
|
@@ -316,13 +318,13 @@ def _check_disabled(self, category): |
316 | 318 | def _disabled(bucket): |
317 | 319 | # type: (Any) -> bool |
318 | 320 | ts = self._disabled_until.get(bucket) |
319 | | - return ts is not None and ts > datetime.utcnow() |
| 321 | + return ts is not None and ts > datetime_utcnow() |
320 | 322 |
|
321 | 323 | return _disabled(category) or _disabled(None) |
322 | 324 |
|
323 | 325 | def _is_rate_limited(self): |
324 | 326 | # type: () -> bool |
325 | | - return any(ts > datetime.utcnow() for ts in self._disabled_until.values()) |
| 327 | + return any(ts > datetime_utcnow() for ts in self._disabled_until.values()) |
326 | 328 |
|
327 | 329 | def _is_worker_full(self): |
328 | 330 | # type: () -> bool |
|
0 commit comments