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]