GitHub user MorieeLM created a discussion: websocket connection to superset

@dosu
here is my current superset.yaml sections regarding websocket connection: 

supersetWebsockets:
  enabled: true
  replicaCount: 1
  image:
    repository: oneacrefund/superset-websocket
    tag: latest
    pullPolicy: IfNotPresent
  config:
    port: 8080
    logLevel: debug
    logToFile: false
    redis:
      port: 6379
      host: superset-redis-master
      password: ""
      db: 2  # Match GLOBAL_ASYNC_QUERIES_REDIS_DB
      ssl: false
    redisStreamPrefix: "async-events-"
    jwtSecret: "${GLOBAL_ASYNC_QUERIES_JWT_SECRET}"
    jwtCookieName: "async-token"
  service:
    type: NodePort
    nodePort:
      http: 30089
    port: 8080
  resources:
    requests:
      memory: 512Mi
      cpu: 250m
    limits:
      memory: 1Gi
      cpu: 500m
extraEnv:
  REDIS_HOST: superset-redis-master
  REDIS_PORT: "6379"
  REDIS_DB: "0"
  REDIS_CELERY_DB: "1"
  REDIS_PROTO: "redis"
  GLOBAL_ASYNC_QUERIES_REDIS_HOST: superset-redis-master
  GLOBAL_ASYNC_QUERIES_REDIS_PORT: "6379"
  GLOBAL_ASYNC_QUERIES_REDIS_DB: "2"
  CELERY_BROKER_URL: "redis://superset-redis-master:6379/1"
  CELERY_RESULT_BACKEND: "redis://superset-redis-master:6379/1"
  GLOBAL_ASYNC_QUERIES_WEBSOCKET_URL: "ws://localhost:30089"
  
  configOverrides:
  # Single comprehensive configuration to avoid conflicts
  superset_config: |
    import os
    from flask_caching.backends.rediscache import RedisCache

    # Secret key
    SECRET_KEY = os.environ.get('SECRET_KEY')

    # Database configuration
    SQLALCHEMY_DATABASE_URI = os.environ.get('SQLALCHEMY_DATABASE_URI')

    # Redis configuration
    REDIS_HOST = os.environ.get('REDIS_HOST', 'superset-redis-master')
    REDIS_PORT = int(os.environ.get('REDIS_PORT', '6379'))
    REDIS_DB = int(os.environ.get('REDIS_DB', '0'))
    REDIS_CELERY_DB = int(os.environ.get('REDIS_CELERY_DB', '1'))
    GLOBAL_ASYNC_QUERIES_REDIS_DB = 
int(os.environ.get('GLOBAL_ASYNC_QUERIES_REDIS_DB', '2'))

    # Proxy and feature flags
    ENABLE_PROXY_FIX = True
    FEATURE_FLAGS = {
        "DASHBOARD_NATIVE_FILTERS": True,
        "DASHBOARD_CROSS_FILTERS": True,
        "GLOBAL_ASYNC_QUERIES": True,
    }

    # Celery configuration (don't override the default one, just update it)
    CELERY_CONFIG = {
        'broker_url': f'redis://{REDIS_HOST}:{REDIS_PORT}/{REDIS_CELERY_DB}',
        'result_backend': 
f'redis://{REDIS_HOST}:{REDIS_PORT}/{REDIS_CELERY_DB}',
        'imports': [
            'superset.sql_lab',
            'superset.tasks.scheduler',
        ],
        'worker_prefetch_multiplier': 10,
        'task_acks_late': True,
        'task_annotations': {
            'sql_lab.get_sql_results': {
                'rate_limit': '100/s',
            },
        }
    }
    
     # Cache configuration
    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_DB,
        'CACHE_REDIS_URL': f'redis://{REDIS_HOST}:{REDIS_PORT}/{REDIS_DB}',
    }

    DATA_CACHE_CONFIG = CACHE_CONFIG

    RESULTS_BACKEND = RedisCache(
        host=REDIS_HOST,
        port=REDIS_PORT,
        db=REDIS_DB,
        key_prefix='superset_results'
    )

    # Global async queries configuration
    GLOBAL_ASYNC_QUERIES_JWT_SECRET = 
os.environ.get('GLOBAL_ASYNC_QUERIES_JWT_SECRET')
    GLOBAL_ASYNC_QUERIES_REDIS_CONFIG = {
        'host': REDIS_HOST,
        'port': REDIS_PORT,
        'db': GLOBAL_ASYNC_QUERIES_REDIS_DB,
    }

    GLOBAL_ASYNC_QUERIES_TRANSPORT = 'ws'
    GLOBAL_ASYNC_QUERIES_WEBSOCKET_URL = 
os.environ.get('GLOBAL_ASYNC_QUERIES_WEBSOCKET_URL')
    GLOBAL_ASYNC_QUERIES_REDIS_STREAM_PREFIX = 'async-events-'
    GLOBAL_ASYNC_QUERIES_REDIS_STREAM_LIMIT = 1000
    GLOBAL_ASYNC_QUERIES_REDIS_STREAM_LIMIT_FIREHOSE = 100
    GLOBAL_ASYNC_QUERIES_CACHE_BACKEND = {
        'CACHE_TYPE': 'RedisCache',
        'CACHE_REDIS_HOST': REDIS_HOST,
        'CACHE_REDIS_PORT': REDIS_PORT,
        'CACHE_REDIS_DB': GLOBAL_ASYNC_QUERIES_REDIS_DB,
        'CACHE_DEFAULT_TIMEOUT': 300,
        'CACHE_KEY_PREFIX': 'superset_async_',
    }

websocket pod is running and I get this:  kubectl logs 
superset-ws-79597ff8cb-dg5t7 -n superset                       
> [email protected] start
> node dist/index.js start

{"level":"info","message":"Server started on port 8080"}
{"level":"debug","message":"channel count: 0"}
{"level":"debug","message":"socket count: 0"}
{"level":"debug","message":"channel count: 0"}
{"level":"debug","message":"socket count: 0"}
{"level":"debug","message":"channel count: 0"}
{"level":"debug","message":"socket count: 0"}
{"level":"debug","message":"channel count: 0"}
{"level":"debug","message":"socket count: 0"}
{"level":"debug","message":"channel count: 0"}
{"level":"debug","message":"socket count: 0"}
{"level":"debug","message":"channel count: 0"}
{"level":"debug","message":"socket count: 0"}
{"level":"debug","message":"channel count: 0"}
{"level":"debug","message":"socket count: 0"}
{"level":"debug","message":"channel count: 0"}
{"level":"debug","message":"socket count: 0"}
{"level":"debug","message":"channel count: 0"}
{"level":"debug","message":"socket count: 0"}
{"level":"debug","message":"channel count: 0"}
{"level":"debug","message":"socket count: 0"}
{"level":"debug","message":"channel count: 0"}
{"level":"debug","message":"socket count: 0"}
{"level":"debug","message":"channel count: 0"}
{"level":"debug","message":"socket count: 0"}
{"level":"info","message":"Received unexpected request: GET /"}
{"level":"info","message":"Received unexpected request: GET /favicon.ico"}
{"level":"debug","message":"channel count: 0"}
{"level":"debug","message":"socket count: 0"}
{"level":"debug","message":"channel count: 0"}
{"level":"debug","message":"socket count: 0"}
{"level":"debug","message":"channel count: 0"}
{"level":"debug","message":"socket count: 0"}


the reason I opted for websocket is because superset required manual browser 
tab refreshes. please fix



GitHub link: https://github.com/apache/superset/discussions/34703

----
This is an automatically sent email for [email protected].
To unsubscribe, please send an email to: 
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to