ndokter / dsmr_parser

Library to parse Dutch Smart Meter Requirements (DSMR) telegrams.
MIT License
112 stars 63 forks source link

Detected blocking call to open in pytz #156

Closed elupus closed 4 months ago

elupus commented 4 months ago

Blocking call occured in the dsmr asyncio parser.

2024-06-03 17:10:21.151 WARNING (MainThread) [homeassistant.util.loop] Detected blocking call to open with args ('/usr/local/lib/python3.12/site-packages/pytz/zoneinfo/Europe/Amsterdam', 'rb') in /usr/local/lib/python3.12/site-packages/pytz/__init__.py, line 108: return open(filename, 'rb') inside the event loop
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/src/homeassistant/homeassistant/__main__.py", line 223, in <module>
    sys.exit(main())
  File "/usr/src/homeassistant/homeassistant/__main__.py", line 209, in main
    exit_code = runner.run(runtime_conf)
  File "/usr/src/homeassistant/homeassistant/runner.py", line 188, in run
    return loop.run_until_complete(setup_and_run_hass(runtime_config))
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 672, in run_until_complete
    self.run_forever()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 639, in run_forever
    self._run_once()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 1988, in _run_once
    handle._run()
  File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run
    self._context.run(self._callback, *self._args)
  File "/usr/local/lib/python3.12/asyncio/selector_events.py", line 960, in _read_ready
    self._read_ready_cb()
  File "/usr/local/lib/python3.12/asyncio/selector_events.py", line 1017, in _read_ready__data_received
    self._protocol.data_received(data)
  File "/usr/local/lib/python3.12/site-packages/dsmr_parser/clients/protocol.py", line 133, in data_received
    self.handle_telegram(telegram)
  File "/usr/local/lib/python3.12/site-packages/dsmr_parser/clients/protocol.py", line 159, in handle_telegram
    parsed_telegram = self.telegram_parser.parse(telegram)
  File "/usr/local/lib/python3.12/site-packages/dsmr_parser/parsers.py", line 95, in parse
    dsmr_object = object["value_parser"].parse(match)
  File "/usr/local/lib/python3.12/site-packages/dsmr_parser/parsers.py", line 311, in parse
    values=self._parse(line)
  File "/usr/local/lib/python3.12/site-packages/dsmr_parser/parsers.py", line 219, in _parse
    return self._parse_values(values)
  File "/usr/local/lib/python3.12/site-packages/dsmr_parser/parsers.py", line 190, in _parse_values
    return [self.value_formats[i].parse(value)
  File "/usr/local/lib/python3.12/site-packages/dsmr_parser/parsers.py", line 399, in parse
    value = self.coerce_type(value) if value is not None else value
  File "/usr/local/lib/python3.12/site-packages/dsmr_parser/value_types.py", line 24, in timestamp
    local_tz = pytz.timezone('Europe/Amsterdam')
  File "/usr/local/lib/python3.12/site-packages/pytz/__init__.py", line 182, in timezone
    fp = open_resource(zone)
  File "/usr/local/lib/python3.12/site-packages/pytz/__init__.py", line 108, in open_resource
    return open(filename, 'rb')