Avoid loading timezone at runtime (#157)

* Avoid loading timezone at runtime

Pytz will load timezone info from files in
a lazy fashion on first access. This triggers warnings in HA due to it blocking the event loop.

Pre-load the needed timezone info at module import instead, which will run in
executor in HA.

* Update value_types.py
This commit is contained in:
Joakim Plate 2024-06-04 15:51:03 +02:00 committed by GitHub
parent 3cf627eedc
commit b42ceb6555
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -2,6 +2,10 @@ import datetime
import pytz import pytz
# TODO : Use system timezone
# Preload timezone to avoid loading in event loop later
local_tz = pytz.timezone('Europe/Amsterdam')
def timestamp(value): def timestamp(value):
try: try:
@ -20,8 +24,6 @@ def timestamp(value):
else: else:
is_dst = False is_dst = False
# TODO : Use system timezone
local_tz = pytz.timezone('Europe/Amsterdam')
localized_datetime = local_tz.localize(naive_datetime, is_dst=is_dst) localized_datetime = local_tz.localize(naive_datetime, is_dst=is_dst)
return localized_datetime.astimezone(pytz.utc) return localized_datetime.astimezone(pytz.utc)