[BUG] Cannot get task result when using elasticsearch as the result backend
k0286 opened this issue · 0 comments
k0286 commented
Describe the bug
I use Elasticsearch as the result backend and Redis as the broker.
After I enter the page of celery-insights, I click a task for the detail.
The page show the arguments
and result
loading forever.
The config.py
and the log of celery-insights are show in the following
import os
broker_url = "redis://redis:6379"
broker_transport_options = {
"master_name": "mymaster",
"db": 0,
"sentinel_kwargs": {"password": os.getenv("REDIS_SENTINEL_PASSWD", "redis")},
}
result_backend = "elasticsearch://es:9200/celery-result/_doc"
voc_celery_insights_5 | ERROR: Exception in ASGI application
voc_celery_insights_5 | Traceback (most recent call last):
voc_celery_insights_5 | File "/usr/local/lib/python3.11/site-packages/uvicorn/protocols/http/h11_impl.py", line 428, in run_asgi
voc_celery_insights_5 | result = await app( # type: ignore[func-returns-value]
voc_celery_insights_5 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
voc_celery_insights_5 | File "/usr/local/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 78, in __call__
voc_celery_insights_5 | return await self.app(scope, receive, send)
voc_celery_insights_5 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
voc_celery_insights_5 | File "/usr/local/lib/python3.11/site-packages/fastapi/applications.py", line 276, in __call__
voc_celery_insights_5 | await super().__call__(scope, receive, send)
voc_celery_insights_5 | File "/usr/local/lib/python3.11/site-packages/starlette/applications.py", line 122, in __call__
voc_celery_insights_5 | await self.middleware_stack(scope, receive, send)
voc_celery_insights_5 | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 184, in __call__
voc_celery_insights_5 | raise exc
voc_celery_insights_5 | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 162, in __call__
voc_celery_insights_5 | await self.app(scope, receive, _send)
voc_celery_insights_5 | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 84, in __call__
voc_celery_insights_5 | await self.app(scope, receive, send)
voc_celery_insights_5 | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 79, in __call__
voc_celery_insights_5 | raise exc
voc_celery_insights_5 | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 68, in __call__
voc_celery_insights_5 | await self.app(scope, receive, sender)
voc_celery_insights_5 | File "/usr/local/lib/python3.11/site-packages/fastapi/middleware/asyncexitstack.py", line 21, in __call__
voc_celery_insights_5 | raise e
voc_celery_insights_5 | File "/usr/local/lib/python3.11/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
voc_celery_insights_5 | await self.app(scope, receive, send)
voc_celery_insights_5 | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 718, in __call__
voc_celery_insights_5 | await route.handle(scope, receive, send)
voc_celery_insights_5 | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 276, in handle
voc_celery_insights_5 | await self.app(scope, receive, send) [88/4849]
voc_celery_insights_5 | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 66, in app
voc_celery_insights_5 | response = await func(request)
voc_celery_insights_5 | ^^^^^^^^^^^^^^^^^^^
voc_celery_insights_5 | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 237, in app
voc_celery_insights_5 | raw_response = await run_endpoint_function(
voc_celery_insights_5 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
voc_celery_insights_5 | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 163, in run_endpoint_function
voc_celery_insights_5 | return await dependant.call(**values)
voc_celery_insights_5 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
voc_celery_insights_5 | File "/usr/local/lib/python3.11/site-packages/fastapi_cache/decorator.py", line 169, in inner
voc_celery_insights_5 | ret = await ensure_async_func(*args, **kwargs)
voc_celery_insights_5 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
voc_celery_insights_5 | File "/usr/local/lib/python3.11/site-packages/fastapi_cache/decorator.py", line 99, in ensure_async_func
voc_celery_insights_5 | return await func(*args, **kwargs)
voc_celery_insights_5 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
voc_celery_insights_5 | File "/app/tasks/router.py", line 39, in get_task_result
voc_celery_insights_5 | type=result.name,
voc_celery_insights_5 | ^^^^^^^^^^^
voc_celery_insights_5 | File "/usr/local/lib/python3.11/site-packages/celery/result.py", line 492, in name
voc_celery_insights_5 | return self._get_task_meta().get('name')
voc_celery_insights_5 | ^^^^^^^^^^^^^^^^^^^^^
voc_celery_insights_5 | File "/usr/local/lib/python3.11/site-packages/celery/result.py", line 417, in _get_task_meta
voc_celery_insights_5 | return self._maybe_set_cache(self.backend.get_task_meta(self.id))
voc_celery_insights_5 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
voc_celery_insights_5 | File "/usr/local/lib/python3.11/site-packages/celery/backends/base.py", line 609, in get_task_meta
voc_celery_insights_5 | meta = self._get_task_meta_for(task_id)
voc_celery_insights_5 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
voc_celery_insights_5 | File "/usr/local/lib/python3.11/site-packages/celery/backends/base.py", line 978, in _get_task_meta_for
voc_celery_insights_5 | meta = self.get(self.get_key_for_task(task_id))
voc_celery_insights_5 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
voc_celery_insights_5 | File "/usr/local/lib/python3.11/site-packages/celery/backends/elasticsearch.py", line 101, in get [57/4849]
voc_celery_insights_5 | res = self._get(key)
voc_celery_insights_5 | ^^^^^^^^^^^^^^
voc_celery_insights_5 | File "/usr/local/lib/python3.11/site-packages/celery/backends/elasticsearch.py", line 111, in _get
voc_celery_insights_5 | return self.server.get(
voc_celery_insights_5 | ^^^^^^^^^^^
voc_celery_insights_5 | File "/usr/local/lib/python3.11/site-packages/celery/backends/elasticsearch.py", line 247, in server
voc_celery_insights_5 | self._server = self._get_server()
voc_celery_insights_5 | ^^^^^^^^^^^^^^^^^^
voc_celery_insights_5 | File "/usr/local/lib/python3.11/site-packages/celery/backends/elasticsearch.py", line 235, in _get_server
voc_celery_insights_5 | return elasticsearch.Elasticsearch(
voc_celery_insights_5 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
voc_celery_insights_5 | TypeError: Elasticsearch.__init__() got an unexpected keyword argument 'scheme'
Desktop (please complete the following information):
- Celery: 5.3.6
- Elasticesarch: 7.17.9
- Redis: 7.0.11
Additional context
Using flower
with same configuration is working normally.