diff --git a/huey/api.py b/huey/api.py index 2d204788..47c3f3e2 100644 --- a/huey/api.py +++ b/huey/api.py @@ -39,6 +39,7 @@ from huey.utils import string_type from huey.utils import time_clock from huey.utils import to_timestamp +from huey.utils import utcnow logger = logging.getLogger('huey') @@ -343,7 +344,7 @@ def delete(self, key): return self.storage.delete_data(key) def _get_timestamp(self): - return (datetime.datetime.utcnow() if self.utc else + return (utcnow() if self.utc else datetime.datetime.now()) def execute(self, task, timestamp=None): diff --git a/huey/utils.py b/huey/utils.py index dbd85f6f..69e7868c 100644 --- a/huey/utils.py +++ b/huey/utils.py @@ -11,6 +11,14 @@ except ImportError: fcntl = None +if sys.version_info < (3, 12): + utcnow = datetime.datetime.utcnow +else: + def utcnow(): + return (datetime.datetime + .now(datetime.timezone.utc) + .replace(tzinfo=None)) + Error = namedtuple('Error', ('metadata',)) @@ -86,7 +94,7 @@ def normalize_time(eta=None, delay=None, utc=True): if not ((delay is None) ^ (eta is None)): raise ValueError('Specify either an eta (datetime) or delay (seconds)') elif delay: - method = (utc and datetime.datetime.utcnow or + method = (utc and utcnow() or datetime.datetime.now) if not isinstance(delay, datetime.timedelta): delay = datetime.timedelta(seconds=delay)