3liz / py-qgis-server

QGIS embbeded WMS/WFS/WCS asynchronous scalable http server
https://docs.3liz.org/py-qgis-server
Mozilla Public License 2.0
68 stars 16 forks source link

AttributeError with python 3.10.4 : 'function' object has no attribute 'select' #42

Closed nicogodet closed 2 years ago

nicogodet commented 2 years ago
./pyqgisserver/bin/qgisserver -c /etc/qgis-server/py-qgis-server.conf ``` $ ./pyqgisserver/bin/qgisserver -c /etc/qgis-server/py-qgis-server.conf WARNING: Failed to load 'PSutil', system metrics will not be collected qgisserver 1.8.1 (build 202205251414,commit 8df0bb1) QGIS 3.22.9-Białowieża 'Białowieża' (a8e9e6fae5) QGIS code revision a8e9e6fae5 Qt version 5.15.3 Python version 3.10.4 GDAL/OGR version 3.4.1 PROJ version 8.2.1 EPSG Registry database version v10.041 (2021-12-03) GEOS version 3.10.2-CAPI-1.16.0 SQLite version 3.37.2 OS Ubuntu 22.04 LTS Log level set to INFO 2022-07-29 19:18:36,832 INFO [121027] Starting broker process 2022-07-29 19:18:36,835 INFO [121035] Binding frontend to ipc:///tmp/qgssrv/broker/121027/0 2022-07-29 19:18:36,836 INFO [121035] Binding backend to ipc:///tmp/qgssrv/broker/121027/pool0 2022-07-29 19:18:36,836 INFO [121035] Starting ZMQ broker loop 2022-07-29 19:18:36,837 INFO [121038] Starting worker pool 2022-07-29 19:18:36,838 INFO [121027] Running server on port 127.0.0.1:9876 2022-07-29 19:18:36,839 INFO [121027] Starting client b'OWS-SERVER-121027' 2022-07-29 19:18:36,840 INFO [121027] Initializing supervisor 2022-07-29 19:18:36,841 INFO [121027] Initializing pool healthcheck 2022-07-29 19:18:36,841 INFO [121027] Starting processing requests Process PoolWorker-2:1: Traceback (most recent call last): File "/usr/lib/python3.10/multiprocessing/process.py", line 315, in _bootstrap self.run() File "/usr/lib/python3.10/multiprocessing/process.py", line 108, in run self._target(*self._args, **self._kwargs) File "/home/lizmap/pyqgisserver/lib/python3.10/site-packages/pyqgisserver/qgsworker.py", line 361, in run QgsRequestHandler.init_server() File "/home/lizmap/pyqgisserver/lib/python3.10/site-packages/pyqgisserver/qgsworker.py", line 248, in init_server cls._cache_service = get_cacheservice() File "/home/lizmap/pyqgisserver/lib/python3.10/site-packages/pyqgisserver/qgscache/cachemanager.py", line 445, in get_cacheservice return componentmanager.get_service(CACHE_MANAGER_CONTRACTID) File "/home/lizmap/pyqgisserver/lib/python3.10/site-packages/pyqgisservercontrib/core/componentmanager.py", line 134, in get_service return gComponentManager.get_service( contractID ) File "/home/lizmap/pyqgisserver/lib/python3.10/site-packages/pyqgisservercontrib/core/componentmanager.py", line 123, in get_service fe = fe._replace(service=fe.create_instance()) File "/home/lizmap/pyqgisserver/lib/python3.10/site-packages/pyqgisserver/qgscache/cachemanager.py", line 169, in __init__ componentmanager.register_entrypoints('qgssrv_contrib_protocol_handler') File "/home/lizmap/pyqgisserver/lib/python3.10/site-packages/pyqgisservercontrib/core/componentmanager.py", line 146, in register_entrypoints gComponentManager.register_entrypoints( category, *args, **kwargs ) File "/home/lizmap/pyqgisserver/lib/python3.10/site-packages/pyqgisservercontrib/core/componentmanager.py", line 79, in register_entrypoints for ep in _entry_points(category): File "/home/lizmap/pyqgisserver/lib/python3.10/site-packages/pyqgisservercontrib/core/componentmanager.py", line 50, in _entry_points return metadata.entry_points.select(group=group, name=name) AttributeError: 'function' object has no attribute 'select' 2022-07-29 19:18:36,939 WARNING [121038] Worker 121043 exited with code 1 2022-07-29 19:18:36,940 CRITICAL [121038] Critical worker failure. Aborting... 2022-07-29 19:18:41,843 CRITICAL [121027] Pool failure, exiting because of unrecoverable error... Exiting with code: 1 2022-07-29 19:18:41,844 INFO [121027] Terminating client b'OWS-SERVER-121027' PID 121027: Server instance stopped Stopping workers 2022-07-29 19:18:41,845 INFO [121027] Stopping supervisor Stopping broker 2022-07-29 19:18:41,845 WARNING [121035] Broker Terminated Server shutdown ```

https://github.com/3liz/py-qgis-server/blob/64b79f7fb08ec0ec3427179915c6bd072fa4baa3/pyqgisservercontrib/core/componentmanager.py#L47-L50

It seems that this condition need to be adapted Replacing

return metadata.entry_points.select(group=group, name=name)

by

return metadata.entry_points().select(group=group, name=name)

solves the error.

In fact, the doc says entry_points() and not entry_points --> https://docs.python.org/3.10/library/importlib.metadata.html#entry-points