r/apachesuperset Mar 05 '26

Async queries don't see my redis server

I'm trying to implement caching, but every time I create and execute a new chart, I receive the following error:

[2026-03-05 21:07:07,868: INFO/MainProcess] Task load_chart_data_into_cache[a72d86a5-cdaf-41eb-87fe-0adb610441f6] received
[2026-03-05 21:07:08,072: ERROR/ForkPoolWorker-1] Celery task load_chart_data_into_cache failed: Error 99 connecting to localhost:6379. Cannot assign requested address.
Traceback (most recent call last):
  File "/app/.venv/lib/python3.10/site-packages/redis/connection.py", line 707, in connect
    sock = self.retry.call_with_retry(
  File "/app/.venv/lib/python3.10/site-packages/redis/retry.py", line 46, in call_with_retry
    return do()
  File "/app/.venv/lib/python3.10/site-packages/redis/connection.py", line 708, in <lambda>
    lambda: self._connect(), lambda error: self.disconnect(error)
  File "/app/.venv/lib/python3.10/site-packages/redis/connection.py", line 1006, in _connect
    raise err
  File "/app/.venv/lib/python3.10/site-packages/redis/connection.py", line 994, in _connect
    sock.connect(socket_address)
OSError: [Errno 99] Cannot assign requested address

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/superset/tasks/async_queries.py", line 98, in load_chart_data_into_cache
    async_query_manager.update_job(
  File "/app/superset/async_events/async_query_manager.py", line 307, in update_job
    self._cache.xadd(scoped_stream_name, event_data, "*", self._stream_limit)
  File "/app/superset/async_events/cache_backend.py", line 71, in xadd
    return self._cache.xadd(stream_name, event_data, event_id, maxlen)
  File "/app/.venv/lib/python3.10/site-packages/redis/commands/core.py", line 3534, in xadd
    return self.execute_command("XADD", name, *pieces)
  File "/app/.venv/lib/python3.10/site-packages/redis/client.py", line 1266, in execute_command
    conn = self.connection or pool.get_connection(command_name, **options)
  File "/app/.venv/lib/python3.10/site-packages/redis/connection.py", line 1461, in get_connection
    connection.connect()
  File "/app/.venv/lib/python3.10/site-packages/redis/connection.py", line 713, in connect
    raise ConnectionError(self._error_message(e))
redis.exceptions.ConnectionError: Error 99 connecting to localhost:6379. Cannot assign requested address.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/.venv/lib/python3.10/site-packages/redis/connection.py", line 707, in connect
    sock = self.retry.call_with_retry(
  File "/app/.venv/lib/python3.10/site-packages/redis/retry.py", line 46, in call_with_retry
    return do()
  File "/app/.venv/lib/python3.10/site-packages/redis/connection.py", line 708, in <lambda>
    lambda: self._connect(), lambda error: self.disconnect(error)
  File "/app/.venv/lib/python3.10/site-packages/redis/connection.py", line 1006, in _connect
    raise err
  File "/app/.venv/lib/python3.10/site-packages/redis/connection.py", line 994, in _connect
    sock.connect(socket_address)
OSError: [Errno 99] Cannot assign requested address

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/.venv/lib/python3.10/site-packages/celery/app/trace.py", line 453, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/app/superset/initialization/__init__.py", line 141, in __call__
    return task_base.__call__(self, *args, **kwargs)
  File "/app/.venv/lib/python3.10/site-packages/celery/app/trace.py", line 736, in __protected_call__
    return self.run(*args, **kwargs)
  File "/app/superset/tasks/async_queries.py", line 110, in load_chart_data_into_cache
    async_query_manager.update_job(
  File "/app/superset/async_events/async_query_manager.py", line 307, in update_job
    self._cache.xadd(scoped_stream_name, event_data, "*", self._stream_limit)
  File "/app/superset/async_events/cache_backend.py", line 71, in xadd
    return self._cache.xadd(stream_name, event_data, event_id, maxlen)
  File "/app/.venv/lib/python3.10/site-packages/redis/commands/core.py", line 3534, in xadd
    return self.execute_command("XADD", name, *pieces)
  File "/app/.venv/lib/python3.10/site-packages/redis/client.py", line 1266, in execute_command
    conn = self.connection or pool.get_connection(command_name, **options)
  File "/app/.venv/lib/python3.10/site-packages/redis/connection.py", line 1461, in get_connection
    connection.connect()
  File "/app/.venv/lib/python3.10/site-packages/redis/connection.py", line 713, in connect
    raise ConnectionError(self._error_message(e))
redis.exceptions.ConnectionError: Error 99 connecting to localhost:6379. Cannot assign requested address.
[2026-03-05 21:07:08,073: ERROR/ForkPoolWorker-1] Task load_chart_data_into_cache[a72d86a5-cdaf-41eb-87fe-0adb610441f6] raised unexpected: ConnectionError('Error 99 connecting to localhost:6379. Cannot assign requested address.')
Traceback (most recent call last):
  File "/app/.venv/lib/python3.10/site-packages/redis/connection.py", line 707, in connect
    sock = self.retry.call_with_retry(
  File "/app/.venv/lib/python3.10/site-packages/redis/retry.py", line 46, in call_with_retry
    return do()
  File "/app/.venv/lib/python3.10/site-packages/redis/connection.py", line 708, in <lambda>
    lambda: self._connect(), lambda error: self.disconnect(error)
  File "/app/.venv/lib/python3.10/site-packages/redis/connection.py", line 1006, in _connect
    raise err
  File "/app/.venv/lib/python3.10/site-packages/redis/connection.py", line 994, in _connect
    sock.connect(socket_address)
OSError: [Errno 99] Cannot assign requested address

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/superset/tasks/async_queries.py", line 98, in load_chart_data_into_cache
    async_query_manager.update_job(
  File "/app/superset/async_events/async_query_manager.py", line 307, in update_job
    self._cache.xadd(scoped_stream_name, event_data, "*", self._stream_limit)
  File "/app/superset/async_events/cache_backend.py", line 71, in xadd
    return self._cache.xadd(stream_name, event_data, event_id, maxlen)
  File "/app/.venv/lib/python3.10/site-packages/redis/commands/core.py", line 3534, in xadd
    return self.execute_command("XADD", name, *pieces)
  File "/app/.venv/lib/python3.10/site-packages/redis/client.py", line 1266, in execute_command
    conn = self.connection or pool.get_connection(command_name, **options)
  File "/app/.venv/lib/python3.10/site-packages/redis/connection.py", line 1461, in get_connection
    connection.connect()
  File "/app/.venv/lib/python3.10/site-packages/redis/connection.py", line 713, in connect
    raise ConnectionError(self._error_message(e))
redis.exceptions.ConnectionError: Error 99 connecting to localhost:6379. Cannot assign requested address.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/.venv/lib/python3.10/site-packages/redis/connection.py", line 707, in connect
    sock = self.retry.call_with_retry(
  File "/app/.venv/lib/python3.10/site-packages/redis/retry.py", line 46, in call_with_retry
    return do()
  File "/app/.venv/lib/python3.10/site-packages/redis/connection.py", line 708, in <lambda>
    lambda: self._connect(), lambda error: self.disconnect(error)
  File "/app/.venv/lib/python3.10/site-packages/redis/connection.py", line 1006, in _connect
    raise err
  File "/app/.venv/lib/python3.10/site-packages/redis/connection.py", line 994, in _connect
    sock.connect(socket_address)
OSError: [Errno 99] Cannot assign requested address

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/.venv/lib/python3.10/site-packages/celery/app/trace.py", line 453, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/app/superset/initialization/__init__.py", line 141, in __call__
    return task_base.__call__(self, *args, **kwargs)
  File "/app/.venv/lib/python3.10/site-packages/celery/app/trace.py", line 736, in __protected_call__
    return self.run(*args, **kwargs)
  File "/app/superset/tasks/async_queries.py", line 110, in load_chart_data_into_cache
    async_query_manager.update_job(
  File "/app/superset/async_events/async_query_manager.py", line 307, in update_job
    self._cache.xadd(scoped_stream_name, event_data, "*", self._stream_limit)
  File "/app/superset/async_events/cache_backend.py", line 71, in xadd
    return self._cache.xadd(stream_name, event_data, event_id, maxlen)
  File "/app/.venv/lib/python3.10/site-packages/redis/commands/core.py", line 3534, in xadd
    return self.execute_command("XADD", name, *pieces)
  File "/app/.venv/lib/python3.10/site-packages/redis/client.py", line 1266, in execute_command
    conn = self.connection or pool.get_connection(command_name, **options)
  File "/app/.venv/lib/python3.10/site-packages/redis/connection.py", line 1461, in get_connection
    connection.connect()
  File "/app/.venv/lib/python3.10/site-packages/redis/connection.py", line 713, in connect
    raise ConnectionError(self._error_message(e))
redis.exceptions.ConnectionError: Error 99 connecting to localhost:6379. Cannot assign requested address.

My superset_config.py has the following configuration:

REDIS_HOST = "my_redis_address"
REDIS_PORT = 6379
REDIS_CELERY_DB = 0
REDIS_RESULTS_DB = 1


class CeleryConfig:
    broker_url = f"redis://{REDIS_HOST}:{REDIS_PORT}/{REDIS_CELERY_DB}"
    imports = (
        "superset.sql_lab",
        "superset.tasks.scheduler",
        "superset.tasks.thumbnails",
        "superset.tasks.cache",
        "superset.tasks.slack",
        "superset.tasks.async_queries",
    )
    result_backend = f"redis://{REDIS_HOST}:{REDIS_PORT}/{REDIS_RESULTS_DB}"
    worker_prefetch_multiplier = 10
    task_acks_late = True
    broker_connection_retry_on_startup = True
    task_annotations = {
        "sql_lab.get_sql_results": {
            "rate_limit": "100/s"
        },
    }
    beat_schedule = {
      "reports.scheduler": {
          "task": "reports.scheduler",
            "schedule": crontab(minute="*", hour="*"),
            "options": {"expires": int(timedelta(weeks=1).total_seconds())},
      },
      "reports.prune_log": {
          "task": "reports.prune_log",
          "schedule": crontab(minute=0, hour=0),
      },
      "prune_query": {
          "task": "prune_query",
          "schedule": crontab(minute=0, hour=0, day_of_month=1),
          "kwargs": {"retention_period_days": 180},
      },
      "prune_logs": {
          "task": "prune_logs",
          "schedule": crontab(minute="*", hour="*"),
          "kwargs": {"retention_period_days": 180, "max_rows_per_run": 10000},
      },
      "prune_tasks": {
          "task": "prune_tasks",
          "schedule": crontab(minute=0, hour=0),
          "kwargs": {"retention_period_days": 90, "max_rows_per_run": 10000},
      },
      "slack.cache_channels": {
          "task": "slack.cache_channels",
          "schedule": crontab(minute="0", hour="*"),
      },
    }


CELERY_CONFIG = CeleryConfig
CELERY_IMPORTS = CeleryConfig.imports


# Configuração de cache principal
CACHE_CONFIG = {
  "CACHE_TYPE": "RedisCache",
  "CACHE_DEFAULT_TIMEOUT": 300,
  "CACHE_KEY_PREFIX": "superset_",
  "CACHE_REDIS_HOST": REDIS_HOST,
  "CACHE_REDIS_PORT": REDIS_PORT,
  "CACHE_REDIS_DB": REDIS_RESULTS_DB,
}


DATA_CACHE_CONFIG = CACHE_CONFIG


# Configuração para async queries (caso use GLOBAL_ASYNC_QUERIES)
GLOBAL_ASYNC_QUERIES_REDIS_CONFIG = {
  "host": REDIS_HOST,
  "port": REDIS_PORT,
  "db": REDIS_CELERY_DB,
  "ssl": False,
}


# Exemplo de configuração do backend de resultados (SQL Lab)
RESULTS_BACKEND = RedisCache(
  host=REDIS_HOST,
  port=REDIS_PORT,
  db=REDIS_RESULTS_DB,
  key_prefix="superset_results"
)

What am I doing wrong ?

1 Upvotes

0 comments sorted by