(window.webpackJsonp=window.webpackJsonp||[]).push([[59],{GlUp:function(e,n,a){"use strict";a.r(n),a.d(n,"_frontmatter",(function(){return i})),a.d(n,"default",(function(){return b}));var t=a("k1TG"),c=a("8o2o"),r=(a("q1tI"),a("7ljp")),s=a("hhGP"),i=(a("qKvR"),{});void 0!==i&&i&&i===Object(i)&&Object.isExtensible(i)&&!i.hasOwnProperty("__filemeta")&&Object.defineProperty(i,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"src/pages/docs/installation/caching.mdx"}});var o={_frontmatter:i},l=s.a;function b(e){var n=e.components,a=Object(c.a)(e,["components"]);return Object(r.b)(l,Object(t.a)({},o,a,{components:n,mdxType:"MDXLayout"}),Object(r.b)("h2",{id:"caching"},"Caching"),Object(r.b)("p",null,"Superset uses ",Object(r.b)("a",Object(t.a)({parentName:"p"},{href:"https://flask-caching.readthedocs.io/"}),"Flask-Caching")," for caching purpose. For security reasons,\nthere are two separate cache configs for Superset's own metadata (",Object(r.b)("inlineCode",{parentName:"p"},"CACHE_CONFIG"),") and charting data queried from\nconnected datasources (",Object(r.b)("inlineCode",{parentName:"p"},"DATA_CACHE_CONFIG"),"). However, Query results from SQL Lab are stored in another backend\ncalled ",Object(r.b)("inlineCode",{parentName:"p"},"RESULTS_BACKEND"),", See ",Object(r.b)("a",Object(t.a)({parentName:"p"},{href:"/docs/installation/async-queries-celery"}),"Async Queries via Celery")," for details."),Object(r.b)("p",null,"Configuring caching is as easy as providing ",Object(r.b)("inlineCode",{parentName:"p"},"CACHE_CONFIG")," and ",Object(r.b)("inlineCode",{parentName:"p"},"DATA_CACHE_CONFIG")," in your\n",Object(r.b)("inlineCode",{parentName:"p"},"superset_config.py")," that complies with ",Object(r.b)("a",Object(t.a)({parentName:"p"},{href:"https://flask-caching.readthedocs.io/en/latest/#configuring-flask-caching"}),"the Flask-Caching specifications"),"."),Object(r.b)("p",null,"Flask-Caching supports various caching backends, including Redis, Memcached, SimpleCache (in-memory), or the\nlocal filesystem."),Object(r.b)("ul",null,Object(r.b)("li",{parentName:"ul"},"Memcached: we recommend using ",Object(r.b)("a",Object(t.a)({parentName:"li"},{href:"https://pypi.org/project/pylibmc/"}),"pylibmc")," client library as\n",Object(r.b)("inlineCode",{parentName:"li"},"python-memcached")," does not handle storing binary data correctly."),Object(r.b)("li",{parentName:"ul"},"Redis: we recommend the ",Object(r.b)("a",Object(t.a)({parentName:"li"},{href:"https://pypi.python.org/pypi/redis"}),"redis")," Python package")),Object(r.b)("p",null,"Both of these libraries can be installed using pip."),Object(r.b)("p",null,"For chart data, Superset goes up a “timeout search path”, from a slice's configuration\nto the datasource’s, the database’s, then ultimately falls back to the global default\ndefined in ",Object(r.b)("inlineCode",{parentName:"p"},"DATA_CACHE_CONFIG"),"."),Object(r.b)("pre",null,Object(r.b)("code",Object(t.a)({parentName:"pre"},{}),"DATA_CACHE_CONFIG = {\n    'CACHE_TYPE': 'redis',\n    'CACHE_DEFAULT_TIMEOUT': 60 * 60 * 24, # 1 day default (in secs)\n    'CACHE_KEY_PREFIX': 'superset_results',\n    'CACHE_REDIS_URL': 'redis://localhost:6379/0',\n}\n")),Object(r.b)("p",null,"Custom cache backends are also supported. See ",Object(r.b)("a",Object(t.a)({parentName:"p"},{href:"https://flask-caching.readthedocs.io/en/latest/#custom-cache-backends"}),"here")," for specifics."),Object(r.b)("p",null,"Superset has a Celery task that will periodically warm up the cache based on different strategies.\nTo use it, add the following to the ",Object(r.b)("inlineCode",{parentName:"p"},"CELERYBEAT_SCHEDULE")," section in ",Object(r.b)("inlineCode",{parentName:"p"},"config.py"),":"),Object(r.b)("pre",null,Object(r.b)("code",Object(t.a)({parentName:"pre"},{className:"language-python"}),"CELERYBEAT_SCHEDULE = {\n    'cache-warmup-hourly': {\n        'task': 'cache-warmup',\n        'schedule': crontab(minute=0, hour='*'),  # hourly\n        'kwargs': {\n            'strategy_name': 'top_n_dashboards',\n            'top_n': 5,\n            'since': '7 days ago',\n        },\n    },\n}\n")),Object(r.b)("p",null,"This will cache all the charts in the top 5 most popular dashboards every hour. For other\nstrategies, check the ",Object(r.b)("inlineCode",{parentName:"p"},"superset/tasks/cache.py")," file."),Object(r.b)("h3",{id:"caching-thumbnails"},"Caching Thumbnails"),Object(r.b)("p",null,"This is an optional feature that can be turned on by activating it’s feature flag on config:"),Object(r.b)("pre",null,Object(r.b)("code",Object(t.a)({parentName:"pre"},{}),'FEATURE_FLAGS = {\n    "THUMBNAILS": True,\n    "THUMBNAILS_SQLA_LISTENERS": True,\n}\n')),Object(r.b)("p",null,"For this feature you will need a cache system and celery workers. All thumbnails are stored on cache\nand are processed asynchronously by the workers."),Object(r.b)("p",null,"An example config where images are stored on S3 could be:"),Object(r.b)("pre",null,Object(r.b)("code",Object(t.a)({parentName:"pre"},{className:"language-python"}),'from flask import Flask\nfrom s3cache.s3cache import S3Cache\n\n...\n\nclass CeleryConfig(object):\n    BROKER_URL = "redis://localhost:6379/0"\n    CELERY_IMPORTS = ("superset.sql_lab", "superset.tasks", "superset.tasks.thumbnails")\n    CELERY_RESULT_BACKEND = "redis://localhost:6379/0"\n    CELERYD_PREFETCH_MULTIPLIER = 10\n    CELERY_ACKS_LATE = True\n\n\nCELERY_CONFIG = CeleryConfig\n\ndef init_thumbnail_cache(app: Flask) -> S3Cache:\n    return S3Cache("bucket_name", \'thumbs_cache/\')\n\n\nTHUMBNAIL_CACHE_CONFIG = init_thumbnail_cache\n# Async selenium thumbnail task will use the following user\nTHUMBNAIL_SELENIUM_USER = "Admin"\n')),Object(r.b)("p",null,"Using the above example cache keys for dashboards will be ",Object(r.b)("inlineCode",{parentName:"p"},"superset_thumb__dashboard__{ID}"),". You can\noverride the base URL for selenium using:"),Object(r.b)("pre",null,Object(r.b)("code",Object(t.a)({parentName:"pre"},{}),'WEBDRIVER_BASEURL = "https://superset.company.com"\n')),Object(r.b)("p",null,"Additional selenium web drive configuration can be set using ",Object(r.b)("inlineCode",{parentName:"p"},"WEBDRIVER_CONFIGURATION"),". You can\nimplement a custom function to authenticate selenium. The default function uses the ",Object(r.b)("inlineCode",{parentName:"p"},"flask-login"),"\nsession cookie. Here's an example of a custom function signature:"),Object(r.b)("pre",null,Object(r.b)("code",Object(t.a)({parentName:"pre"},{className:"language-python"}),'def auth_driver(driver: WebDriver, user: "User") -> WebDriver:\n    pass\n')),Object(r.b)("p",null,"Then on configuration:"),Object(r.b)("pre",null,Object(r.b)("code",Object(t.a)({parentName:"pre"},{}),"WEBDRIVER_AUTH_FUNC = auth_driver\n")))}void 0!==b&&b&&b===Object(b)&&Object.isExtensible(b)&&!b.hasOwnProperty("__filemeta")&&Object.defineProperty(b,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"src/pages/docs/installation/caching.mdx"}}),b.isMDXComponent=!0}}]);
//# sourceMappingURL=component---src-pages-docs-installation-caching-mdx-3b4481eac9c269115ee3.js.map