After rebuild of my Django 4 Docker container the web service stopped working with error : zoneinfo._common.ZoneInfoNotFoundError: 'No time zone found with key Asia/Hanoi'
My setup is: Python 3.10 Django 4.0.5
Error:
> web_1 | Traceback (most recent call last): web_1
> | File "/usr/local/lib/python3.10/zoneinfo/_common.py", line 12, in
> load_tzdata web_1 | return
> importlib.resources.open_binary(package_name, resource_name) web_1
> | File "/usr/local/lib/python3.10/importlib/resources.py", line 46,
> in open_binary web_1 | return
> reader.open_resource(resource) web_1 | File
> "/usr/local/lib/python3.10/importlib/abc.py", line 433, in
> open_resource web_1 | return
> self.files().joinpath(resource).open('rb') web_1 | File
> "/usr/local/lib/python3.10/pathlib.py", line 1119, in open web_1
> | return self._accessor.open(self, mode, buffering, encoding,
> errors, web_1 | FileNotFoundError: [Errno 2] No such file
> or directory:
> '/usr/local/lib/python3.10/site-packages/tzdata/zoneinfo/Asia/Hanoi'
> web_1 | web_1 | During handling of the
> above exception, another exception occurred: web_1 |
> web_1 | Traceback (most recent call last): web_1
> | File "/home/app/web/manage.py", line 22, in <module> web_1
> | main() web_1 | File "/home/app/web/manage.py",
> line 18, in main web_1 |
> execute_from_command_line(sys.argv) web_1 | File
> "/usr/local/lib/python3.10/site-packages/django/core/management/__init__.py",
> line 446, in execute_from_command_line web_1 |
> utility.execute() web_1 | File
> "/usr/local/lib/python3.10/site-packages/django/core/management/__init__.py",
> line 420, in execute web_1 | django.setup() web_1
> | File "/usr/local/lib/python3.10/site-packages/django/__init__.py",
> line 24, in setup web_1 |
> apps.populate(settings.INSTALLED_APPS) web_1 | File
> "/usr/local/lib/python3.10/site-packages/django/apps/registry.py",
> line 116, in populate web_1 |
> app_config.import_models() web_1 | File
> "/usr/local/lib/python3.10/site-packages/django/apps/config.py", line
> 304, in import_models web_1 | self.models_module =
> import_module(models_module_name) web_1 | File
> "/usr/local/lib/python3.10/importlib/__init__.py", line 126, in
> import_module web_1 | return
> _bootstrap._gcd_import(name[level:], package, level) web_1 | File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
> web_1 | File "<frozen importlib._bootstrap>", line
> 1027, in _find_and_load web_1 | File "<frozen
> importlib._bootstrap>", line 1006, in _find_and_load_unlocked web_1
> | File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
> web_1 | File "<frozen importlib._bootstrap_external>",
> line 883, in exec_module web_1 | File "<frozen
> importlib._bootstrap>", line 241, in _call_with_frames_removed web_1
> | File
> "/usr/local/lib/python3.10/site-packages/django_celery_beat/models.py",
> line 8, in <module> web_1 | import timezone_field
> web_1 | File
> "/usr/local/lib/python3.10/site-packages/timezone_field/__init__.py",
> line 1, in <module> web_1 | from
> timezone_field.fields import TimeZoneField web_1 | File
> "/usr/local/lib/python3.10/site-packages/timezone_field/fields.py",
> line 11, in <module> web_1 | class
> TimeZoneField(models.Field): web_1 | File
> "/usr/local/lib/python3.10/site-packages/timezone_field/fields.py",
> line 41, in TimeZoneField web_1 |
> default_zoneinfo_tzs = [ZoneInfo(tz) for tz in pytz.common_timezones]
> web_1 | File
> "/usr/local/lib/python3.10/site-packages/timezone_field/fields.py",
> line 41, in <listcomp> web_1 | default_zoneinfo_tzs =
> [ZoneInfo(tz) for tz in pytz.common_timezones] web_1 |
> File "/usr/local/lib/python3.10/zoneinfo/_common.py", line 24, in
> load_tzdata web_1 | raise ZoneInfoNotFoundError(f"No
> time zone found with key {key}") web_1 |
> zoneinfo._common.ZoneInfoNotFoundError: 'No time zone found with key
> Asia/Hanoi' web_1 | [2022-08-12 09:18:36 0000] [1]
> [INFO] Starting gunicorn 20.0.4 web_1 | [2022-08-12
> 09:18:36 0000] [1] [INFO] Listening at: http://0.0.0.0:8000 (1) web_1
> | [2022-08-12 09:18:36 0000] [1] [INFO] Using worker: sync web_1
> | [2022-08-12 09:18:36 0000] [11] [INFO] Booting worker with pid: 11
> web_1 | [2022-08-12 12:18:37 0300] [11] [ERROR]
> Exception in worker process web_1 | Traceback (most
> recent call last): web_1 | File
> "/usr/local/lib/python3.10/zoneinfo/_common.py", line 12, in
> load_tzdata web_1 | return
> importlib.resources.open_binary(package_name, resource_name) web_1
> | File "/usr/local/lib/python3.10/importlib/resources.py", line 46,
> in open_binary web_1 | return
> reader.open_resource(resource) web_1 | File
> "/usr/local/lib/python3.10/importlib/abc.py", line 433, in
> open_resource web_1 | return
> self.files().joinpath(resource).open('rb') web_1 | File
> "/usr/local/lib/python3.10/pathlib.py", line 1119, in open web_1
> | return self._accessor.open(self, mode, buffering, encoding,
> errors, web_1 | FileNotFoundError: [Errno 2] No such file
> or directory:
> '/usr/local/lib/python3.10/site-packages/tzdata/zoneinfo/Asia/Hanoi'
> web_1 | web_1 | During handling of the
> above exception, another exception occurred: web_1 |
> web_1 | Traceback (most recent call last): web_1
> | File
> "/usr/local/lib/python3.10/site-packages/gunicorn/arbiter.py", line
> 583, in spawn_worker web_1 | worker.init_process()
> web_1 | File
> "/usr/local/lib/python3.10/site-packages/gunicorn/workers/base.py",
> line 119, in init_process web_1 | self.load_wsgi()
> web_1 | File
> "/usr/local/lib/python3.10/site-packages/gunicorn/workers/base.py",
> line 144, in load_wsgi web_1 | self.wsgi =
> self.app.wsgi() web_1 | File
> "/usr/local/lib/python3.10/site-packages/gunicorn/app/base.py", line
> 67, in wsgi web_1 | self.callable = self.load() web_1
> | File
> "/usr/local/lib/python3.10/site-packages/gunicorn/app/wsgiapp.py",
> line 49, in load web_1 | return self.load_wsgiapp()
> web_1 | File
> "/usr/local/lib/python3.10/site-packages/gunicorn/app/wsgiapp.py",
> line 39, in load_wsgiapp web_1 | return
> util.import_app(self.app_uri) web_1 | File
> "/usr/local/lib/python3.10/site-packages/gunicorn/util.py", line 358,
> in import_app web_1 | mod =
> importlib.import_module(module) web_1 | File
> "/usr/local/lib/python3.10/importlib/__init__.py", line 126, in
> import_module web_1 | return
> _bootstrap._gcd_import(name[level:], package, level) web_1 | File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
> web_1 | File "<frozen importlib._bootstrap>", line
> 1027, in _find_and_load web_1 | File "<frozen
> importlib._bootstrap>", line 1006, in _find_and_load_unlocked web_1
> | File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
> web_1 | File "<frozen importlib._bootstrap_external>",
> line 883, in exec_module web_1 | File "<frozen
> importlib._bootstrap>", line 241, in _call_with_frames_removed web_1
> | File "/home/app/web/config/wsgi.py", line 16, in <module> web_1
> | application = get_wsgi_application() web_1 | File
> "/usr/local/lib/python3.10/site-packages/django/core/wsgi.py", line
> 12, in get_wsgi_application web_1 |
> django.setup(set_prefix=False) web_1 | File
> "/usr/local/lib/python3.10/site-packages/django/__init__.py", line 24,
> in setup web_1 |
> apps.populate(settings.INSTALLED_APPS) web_1 | File
> "/usr/local/lib/python3.10/site-packages/django/apps/registry.py",
> line 116, in populate web_1 |
> app_config.import_models() web_1 | File
> "/usr/local/lib/python3.10/site-packages/django/apps/config.py", line
> 304, in import_models web_1 | self.models_module =
> import_module(models_module_name) web_1 | File
> "/usr/local/lib/python3.10/importlib/__init__.py", line 126, in
> import_module web_1 | return
> _bootstrap._gcd_import(name[level:], package, level) web_1 | File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
> web_1 | File "<frozen importlib._bootstrap>", line
> 1027, in _find_and_load web_1 | File "<frozen
> importlib._bootstrap>", line 1006, in _find_and_load_unlocked web_1
> | File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
> web_1 | File "<frozen importlib._bootstrap_external>",
> line 883, in exec_module web_1 | File "<frozen
> importlib._bootstrap>", line 241, in _call_with_frames_removed web_1
> | File
> "/usr/local/lib/python3.10/site-packages/django_celery_beat/models.py",
> line 8, in <module> web_1 | import timezone_field
> web_1 | File
> "/usr/local/lib/python3.10/site-packages/timezone_field/__init__.py",
> line 1, in <module> web_1 | from
> timezone_field.fields import TimeZoneField web_1 | File
> "/usr/local/lib/python3.10/site-packages/timezone_field/fields.py",
> line 11, in <module> web_1 | class
> TimeZoneField(models.Field): web_1 | File
> "/usr/local/lib/python3.10/site-packages/timezone_field/fields.py",
> line 41, in TimeZoneField web_1 |
> default_zoneinfo_tzs = [ZoneInfo(tz) for tz in pytz.common_timezones]
> web_1 | File
> "/usr/local/lib/python3.10/site-packages/timezone_field/fields.py",
> line 41, in <listcomp> web_1 | default_zoneinfo_tzs =
> [ZoneInfo(tz) for tz in pytz.common_timezones] web_1 |
> File "/usr/local/lib/python3.10/zoneinfo/_common.py", line 24, in
> load_tzdata web_1 | raise ZoneInfoNotFoundError(f"No
> time zone found with key {key}") web_1 |
> zoneinfo._common.ZoneInfoNotFoundError: 'No time zone found with key
> Asia/Hanoi' web_1 | [2022-08-12 12:18:37 0300] [11]
> [INFO] Worker exiting (pid: 11) web_1 | [2022-08-12
> 09:18:37 0000] [1] [INFO] Shutting down: Master web_1 |
> [2022-08-12 09:18:37 0000] [1] [INFO] Reason: Worker failed to boot.
In Django settings file:
TIME_ZONE = 'UTC'
USE_TZ = True
PS: Like suggested in other post I added tzdata in my requirements file but nothing changed.
CodePudding user response:
Downgrading the pytz version from 2022.2 to 2022.1 seems to have solved this issue for me.
CodePudding user response:
As a quick (and dirty) way to fix this add these lines to your Dockerfile:
RUN cp /usr/local/lib/python3.10/site-packages/tzdata/zoneinfo/Asia/Aden /usr/local/lib/python3.10/site-packages/tzdata/zoneinfo/Asia/Hanoi && \
cp /usr/local/lib/python3.10/site-packages/tzdata/zoneinfo/Europe/Moscow /usr/local/lib/python3.10/site-packages/tzdata/zoneinfo/Europe/Kyiv