readthedocs.org: Celery: ZoneInfoNotFoundError on development instance

I’m getting the following error on my local environment, but didn’t get too deep in debugging it yet. This started after a rebuild of my local environment build image.

build_1        | Traceback (most recent call last):
build_1        |   File "/usr/lib/python3.10/zoneinfo/_common.py", line 12, in load_tzdata
build_1        |     return importlib.resources.open_binary(package_name, resource_name)
build_1        |   File "/usr/lib/python3.10/importlib/resources.py", line 43, in open_binary
build_1        |     package = _common.get_package(package)
build_1        |   File "/usr/lib/python3.10/importlib/_common.py", line 66, in get_package
build_1        |     resolved = resolve(package)
build_1        |   File "/usr/lib/python3.10/importlib/_common.py", line 57, in resolve
build_1        |     return cand if isinstance(cand, types.ModuleType) else importlib.import_module(cand)
build_1        |   File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
build_1        |     return _bootstrap._gcd_import(name[level:], package, level)
build_1        |   File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
build_1        |   File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
build_1        |   File "<frozen importlib._bootstrap>", line 992, in _find_and_load_unlocked
build_1        |   File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
build_1        |   File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
build_1        |   File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
build_1        |   File "<frozen importlib._bootstrap>", line 1004, in _find_and_load_unlocked
build_1        | ModuleNotFoundError: No module named 'tzdata'
build_1        | 
build_1        | During handling of the above exception, another exception occurred:
build_1        | 
build_1        | Traceback (most recent call last):
build_1        |   File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main
build_1        |     return _run_code(code, main_globals, None,
build_1        |   File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
build_1        |     exec(code, run_globals)
build_1        |   File "/usr/local/lib/python3.10/dist-packages/celery/__main__.py", line 19, in <module>
build_1        |     main()
build_1        |   File "/usr/local/lib/python3.10/dist-packages/celery/__main__.py", line 14, in main
build_1        |     from celery.bin.celery import main as _main
build_1        |   File "/usr/local/lib/python3.10/dist-packages/celery/bin/celery.py", line 34, in <module>
build_1        |     from celery.bin.worker import worker
build_1        |   File "/usr/local/lib/python3.10/dist-packages/celery/bin/worker.py", line 14, in <module>
build_1        |     from celery.concurrency.base import BasePool
build_1        |   File "/usr/local/lib/python3.10/dist-packages/celery/concurrency/base.py", line 12, in <module>
build_1        |     from celery.utils import timer2
build_1        |   File "/usr/local/lib/python3.10/dist-packages/celery/utils/timer2.py", line 14, in <module>
build_1        |     from kombu.asynchronous.timer import Entry
build_1        |   File "/usr/local/lib/python3.10/dist-packages/kombu/asynchronous/__init__.py", line 7, in <module>
build_1        |     from .hub import Hub, get_event_loop, set_event_loop
build_1        |   File "/usr/local/lib/python3.10/dist-packages/kombu/asynchronous/hub.py", line 19, in <module>
build_1        |     from .timer import Timer
build_1        |   File "/usr/local/lib/python3.10/dist-packages/kombu/asynchronous/timer.py", line 32, in <module>
build_1        |     EPOCH = datetime.utcfromtimestamp(0).replace(tzinfo=ZoneInfo("UTC"))
build_1        |   File "/usr/lib/python3.10/zoneinfo/_common.py", line 24, in load_tzdata
build_1        |     raise ZoneInfoNotFoundError(f"No time zone found with key {key}")
build_1        | zoneinfo._common.ZoneInfoNotFoundError: 'No time zone found with key UTC'

Looks like either a missing package or a different TZ is needed in our settings.

About this issue

  • Original URL
  • State: closed
  • Created a year ago
  • Comments: 17 (17 by maintainers)

Most upvoted comments

I think we definitely want timezone information in our runtime environments. It can probably even lead to more issues handling datetime objects in the future. It should be a safe bet to add it as a requirement.

Looks like we need to update our version of celery https://github.com/celery/kombu/issues/1748#issuecomment-1595629517

Try this in production?

In [1]: import tzdata
   ...: print (tzdata.__file__)
   ...: 
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
Cell In[1], line 1
----> 1 import tzdata
      2 print (tzdata.__file__)

ModuleNotFoundError: No module named 'tzdata'

In [2]: from zoneinfo import ZoneInfo
   ...: ZoneInfo("UTC")
Out[2]: zoneinfo.ZoneInfo(key='UTC')

Just to note that I have the same behavior locally inside Docker.