Skip to content

Add documentation about psycopg pool and application configuration #18

@drnextgis

Description

@drnextgis

When I run titiler-pgstac using docker-compose and try to add tile service to QGIS I see these errors in console:

titiler-pgstac | [2021-11-17 19:08:48 +0000] [8] [ERROR] Exception in ASGI application
titiler-pgstac | Traceback (most recent call last):
titiler-pgstac |   File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 396, in run_asgi
titiler-pgstac |     result = await app(self.scope, self.receive, self.send)
titiler-pgstac |   File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
titiler-pgstac |     return await self.app(scope, receive, send)
titiler-pgstac |   File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 199, in __call__
titiler-pgstac |     await super().__call__(scope, receive, send)
titiler-pgstac |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 112, in __call__
titiler-pgstac |     await self.middleware_stack(scope, receive, send)
titiler-pgstac |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
titiler-pgstac |     raise exc from None
titiler-pgstac |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
titiler-pgstac |     await self.app(scope, receive, _send)
titiler-pgstac |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 25, in __call__
titiler-pgstac |     response = await self.dispatch_func(request, self.call_next)
titiler-pgstac |   File "/usr/local/lib/python3.8/site-packages/titiler/core/middleware.py", line 38, in dispatch
titiler-pgstac |     response = await call_next(request)
titiler-pgstac |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 45, in call_next
titiler-pgstac |     task.result()
titiler-pgstac |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
titiler-pgstac |     await self.app(scope, receive, send)
titiler-pgstac |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/cors.py", line 78, in __call__
titiler-pgstac |     await self.app(scope, receive, send)
titiler-pgstac |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
titiler-pgstac |     raise exc from None
titiler-pgstac |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
titiler-pgstac |     await self.app(scope, receive, sender)
titiler-pgstac |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 580, in __call__
titiler-pgstac |     await route.handle(scope, receive, send)
titiler-pgstac |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 241, in handle
titiler-pgstac |     await self.app(scope, receive, send)
titiler-pgstac |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 52, in app
titiler-pgstac |     response = await func(request)
titiler-pgstac |   File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 219, in app
titiler-pgstac |     raw_response = await run_endpoint_function(
titiler-pgstac |   File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 154, in run_endpoint_function
titiler-pgstac |     return await run_in_threadpool(dependant.call, **values)
titiler-pgstac |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 40, in run_in_threadpool
titiler-pgstac |     return await loop.run_in_executor(None, func, *args)
titiler-pgstac |   File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
titiler-pgstac |     result = self.fn(*self.args, **self.kwargs)
titiler-pgstac |   File "/usr/local/lib/python3.8/site-packages/titiler/pgstac/factory.py", line 157, in tile
titiler-pgstac |     data, _ = src_dst.tile(
titiler-pgstac |   File "/usr/local/lib/python3.8/site-packages/titiler/pgstac/mosaic.py", line 216, in tile
titiler-pgstac |     mosaic_assets = self.assets_for_tile(
titiler-pgstac |   File "/usr/local/lib/python3.8/site-packages/titiler/pgstac/mosaic.py", line 139, in assets_for_tile
titiler-pgstac |     return self.get_assets(Polygon.from_bounds(*bbox), **kwargs)
titiler-pgstac |   File "/usr/local/lib/python3.8/site-packages/cachetools/__init__.py", line 520, in wrapper
titiler-pgstac |     v = func(*args, **kwargs)
titiler-pgstac |   File "/usr/local/lib/python3.8/site-packages/titiler/pgstac/mosaic.py", line 175, in get_assets
titiler-pgstac |     conn = self.pool.getconn()
titiler-pgstac |   File "/usr/local/lib/python3.8/site-packages/psycopg2/pool.py", line 169, in getconn
titiler-pgstac |     return self._getconn(key)
titiler-pgstac |   File "/usr/local/lib/python3.8/site-packages/psycopg2/pool.py", line 92, in _getconn
titiler-pgstac |     raise PoolError("connection pool exhausted")
titiler-pgstac | psycopg2.pool.PoolError: connection pool exhausted

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationhelp wantedExtra attention is needed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions