缓存
Superset 使用 Flask-Caching 进行缓存。 Flask-Caching 支持多种缓存后端,包括 Redis(推荐)、Memcached、SimpleCache(内存中)或本地文件系统。 还支持自定义缓存后端。
可以通过在 superset_config.py
中提供符合 Flask-Caching 配置规范 的字典来配置缓存。
以下缓存配置可以通过这种方式进行自定义:
- 仪表板过滤器状态(必需):
FILTER_STATE_CACHE_CONFIG
- 探索图表表单数据(必需):
EXPLORE_FORM_DATA_CACHE_CONFIG
- 元数据缓存(可选):
CACHE_CONFIG
- 从数据集中查询的图表数据(可选):
DATA_CACHE_CONFIG
例如,要使用 Redis 配置过滤器状态缓存:
FILTER_STATE_CACHE_CONFIG = {
'CACHE_TYPE': 'RedisCache',
'CACHE_DEFAULT_TIMEOUT': 86400,
'CACHE_KEY_PREFIX': 'superset_filter_cache',
'CACHE_REDIS_URL': 'redis://localhost:6379/0'
}
依赖项
为了使用专用缓存存储,必须安装额外的 Python 库
这些库可以使用 pip 安装。
回退元数据存储缓存
请注意,某些形式的过滤器状态和探索缓存是必需的。如果这些缓存中的任何一个未定义,Superset 将回退到使用内置缓存,该缓存将数据存储在元数据数据库中。虽然建议使用专用缓存,但内置缓存也可以用于缓存其他数据。
例如,要使用内置缓存存储图表数据,请使用以下配置:
DATA_CACHE_CONFIG = {
"CACHE_TYPE": "SupersetMetastoreCache",
"CACHE_KEY_PREFIX": "superset_results", # 确保此字符串唯一以避免冲突
"CACHE_DEFAULT_TIMEOUT": 86400, # 60 秒 * 60 分钟 * 24 小时
}
图表缓存超时
图表的缓存超时可以通过单个图表、数据集或数据库的设置进行覆盖。在回退到 DATA_CACHE_CONFIG
中定义的默认值之前,将按顺序检查这些配置。
请注意,通过将缓存超时设置为 -1
,可以禁用图表数据的缓存,无论是针对单个图表、数据集或数据库,还是默认情况下在 DATA_CACHE_CONFIG
中设置。
SQL Lab 查询结果
当启用异步查询时,SQL Lab 查询结果的缓存是使用的,并使用 RESULTS_BACKEND
进行配置。
请注意,此配置不使用 flask-caching 字典 进行配置,而是需要一个 cachelib 对象。
有关详细信息,请参阅 通过 Celery 进行异步查询。
缓存缩略图
这是一个可选功能,可以通过在配置中激活其功能标志来启用:
FEATURE_FLAGS = {
"THUMBNAILS": True,
"THUMBNAILS_SQLA_LISTENERS": True,
}
默认情况下,缩略图是按用户渲染的,匿名用户将回退到 Selenium 用户。要始终将缩略图渲染为固定用户(例如 admin
),请使用以下配置:
from superset.tasks.types import ExecutorType
THUMBNAIL_SELENIUM_USER = "admin"
THUMBNAIL_EXECUTE_AS = [ExecutorType.SELENIUM]
对于此功能,您需要一个缓存系统和 celery 工作进程。所有缩略图都存储在缓存中,并由工作进程异步处理。
一个示例配置,其中图像存储在 S3 上:
from flask import Flask
from s3cache.s3cache import S3Cache
...
class CeleryConfig(object):
broker_url = "redis://localhost:6379/0"
imports = (
"superset.sql_lab",
"superset.tasks.thumbnails",
)
result_backend = "redis://localhost:6379/0"
worker_prefetch_multiplier = 10
task_acks_late = True
CELERY_CONFIG = CeleryConfig
def init_thumbnail_cache(app: Flask) -> S3Cache:
return S3Cache("bucket_name", 'thumbs_cache/')
THUMBNAIL_CACHE_CONFIG = init_thumbnail_cache
# 异步 selenium 缩略图任务将使用以下用户
THUMBNAIL_SELENIUM_USER = "Admin"
使用上述示例缓存键,仪表板的缓存键将为 superset_thumb__dashboard__{ID}
。您可以使用以下方式覆盖 selenium 的基本 URL:
WEBDRIVER_BASEURL = "https://superset.company.com"
可以使用 WEBDRIVER_CONFIGURATION
设置其他 selenium web 驱动配置。您可以实现自定义函数来对 selenium 进行身份验证。默认函数使用 flask-login
。
会话Cookie。以下是一个自定义函数签名的示例:
def auth_driver(driver: WebDriver, user: "User") -> WebDriver:
pass
然后在配置中:
WEBDRIVER_AUTH_FUNC = auth_driver