Skip to content

uvloop issue with uvicorn #21

@sbrunato

Description

@sbrunato

when running the server using uvicorn stac_fastapi.eodag.app:app and performing a POST search, the following error is raised:

Traceback (most recent call last):
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi
    result = await app(  # type: ignore[func-returns-value]
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
    return await self.app(scope, receive, send)
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/starlette/applications.py", line 112, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/stac_fastapi/api/middleware.py", line 83, in __call__
    await self.app(scope, receive, send)
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/starlette/middleware/cors.py", line 85, in __call__
    await self.app(scope, receive, send)
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/brotli_asgi/__init__.py", line 81, in __call__
    await br_responder(scope, receive, send)
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/brotli_asgi/__init__.py", line 126, in __call__
    await self.app(scope, receive, self.send_with_brotli)
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 181, in __call__
    recv_stream.close()
  File "/home/sylvain/.local/share/uv/python/cpython-3.9.20-linux-x86_64-gnu/lib/python3.9/contextlib.py", line 137, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 178, in __call__
    response = await self.dispatch_func(request, call_next)
  File "/home/sylvain/workspace/stac-fastapi-eodag/stac_fastapi/eodag/logs.py", line 61, in dispatch
    response = await call_next(request)
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 156, in call_next
    raise app_exc
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 141, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/starlette/routing.py", line 714, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/starlette/routing.py", line 734, in app
    await route.handle(scope, receive, send)
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/stac_fastapi/api/routes.py", line 67, in _endpoint
    return _wrap_response(await func(request_data, request=request))
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/stac_fastapi/api/routes.py", line 34, in run
    return await run_in_threadpool(func, *args, **kwargs)
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/starlette/concurrency.py", line 37, in run_in_threadpool
    return await anyio.to_thread.run_sync(func)
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/anyio/to_thread.py", line 56, in run_sync
    return await get_async_backend().run_sync_in_worker_thread(
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/anyio/_backends/_asyncio.py", line 2470, in run_sync_in_worker_thread
    return await future
  File "/home/sylvain/workspace/stac-fastapi-eodag/.venv/lib/python3.9/site-packages/anyio/_backends/_asyncio.py", line 967, in run
    result = context.run(func, *args)
  File "/home/sylvain/workspace/stac-fastapi-eodag/stac_fastapi/eodag/core.py", line 377, in post_search
    return self._search_base(search_request, request)
  File "/home/sylvain/workspace/stac-fastapi-eodag/stac_fastapi/eodag/core.py", line 185, in _search_base
    request_json = loop.run_until_complete(request.json()) if request.method == "POST" else None
  File "uvloop/loop.pyx", line 1512, in uvloop.loop.Loop.run_until_complete
  File "uvloop/loop.pyx", line 1505, in uvloop.loop.Loop.run_until_complete
  File "uvloop/loop.pyx", line 1379, in uvloop.loop.Loop.run_forever
  File "uvloop/loop.pyx", line 520, in uvloop.loop.Loop._run
RuntimeError: this event loop is already running.

and the request returns

{
  "code": 500,
  "ticket": "bbb7f2f9",
  "description": "this event loop is already running."
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions