日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

云主机superset接入redis缓存

發布時間:2023/12/31 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 云主机superset接入redis缓存 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

起因

如果把很多地理數據可視化放入一個dashboard會出現這么個問題

?

環境

環境版本
Ubuntu18.04

apache-superset

(pip install apache-superset)

0.37.1
Mysql5.7
redis-cli4.0.9

?

調研

[1]提到了二級緩存

[4]提到如果配置cache成功會有相關信息

?

?

準備工作

apt install redis

(virtualenv環境)pip install?redis

?

?

編輯

~/.virtualenvs/python3.6/lib/python3.6/site-packages/superset/config.py

所有需要cache字樣的全部配置成redis,具體改法見文末附錄

?

配置效果

啟動項目打開dashboard,log中會Serving from cache的字樣,說明配置成功

說明配置成功

?

如果依然出現下面SQL語句:

說明配置失敗

?

可視化效果

打開http://49.235.108.13:5000/superset/dashboard/3/

如果superset沒有redis就會出現一大堆的close wait以及在dashboard上會因為timeout導致無法顯示chart

?

?

?

相關命令

用SSH從遠程服務器批量復制文件到本地(注意要在本地電腦上執行以下命令,而不是云主機上)

scp -r appleyuchi@49.235.108.13:/home/appleyuchi/.virtualenvs/python3.6/lib/python3.6/site-packages/superset/config.py /home/appleyuchi scp -r /home/appleyuchi/config.py appleyuchi@49.235.108.13:/home/appleyuchi/.virtualenvs/python3.6/lib/python3.6/site-packages/superset

?

附錄


config.py完整內容

(注意僅僅適用于apache-superset 0.37.1)

# Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. """The main config file for SupersetAll configuration in this file can be overridden by providing a superset_config in your PYTHONPATH as there is a ``from superset_config import *`` at the end of this file. """ import imp import importlib.util import json import logging import os import sys from collections import OrderedDict from datetime import date from typing import Any, Callable, Dict, List, Optional, Type, TYPE_CHECKINGfrom cachelib.base import BaseCache from celery.schedules import crontab from dateutil import tz from flask import Blueprint from flask_appbuilder.security.manager import AUTH_DB from pandas.io.parsers import STR_NA_VALUESfrom superset.jinja_context import ( # pylint: disable=unused-importBaseTemplateProcessor, ) from superset.stats_logger import DummyStatsLogger from superset.typing import CacheConfig from superset.utils.log import DBEventLogger from superset.utils.logging_configurator import DefaultLoggingConfiguratorlogger = logging.getLogger(__name__)if TYPE_CHECKING:from flask_appbuilder.security.sqla import models # pylint: disable=unused-importfrom superset.models.core import Database # pylint: disable=unused-import# Realtime stats logger, a StatsD implementation exists STATS_LOGGER = DummyStatsLogger() EVENT_LOGGER = DBEventLogger()SUPERSET_LOG_VIEW = TrueBASE_DIR = os.path.abspath(os.path.dirname(__file__)) if "SUPERSET_HOME" in os.environ:DATA_DIR = os.environ["SUPERSET_HOME"] else:DATA_DIR = os.path.join(os.path.expanduser("~"), ".superset")# --------------------------------------------------------- # Superset specific config # --------------------------------------------------------- VERSION_INFO_FILE = os.path.join(BASE_DIR, "static", "version_info.json") PACKAGE_JSON_FILE = os.path.join(BASE_DIR, "static", "assets", "package.json")# Multiple favicons can be specified here. The "href" property # is mandatory, but "sizes," "type," and "rel" are optional. # For example: # { # "href":path/to/image.png", # "sizes": "16x16", # "type": "image/png" # "rel": "icon" # }, FAVICONS = [{"href": "/static/assets/images/favicon.png"}]def _try_json_readversion(filepath: str) -> Optional[str]:try:with open(filepath, "r") as f:return json.load(f).get("version")except Exception: # pylint: disable=broad-exceptreturn Nonedef _try_json_readsha( # pylint: disable=unused-argumentfilepath: str, length: int ) -> Optional[str]:try:with open(filepath, "r") as f:return json.load(f).get("GIT_SHA")[:length]except Exception: # pylint: disable=broad-exceptreturn None# Depending on the context in which this config is loaded, the # version_info.json file may or may not be available, as it is # generated on install via setup.py. In the event that we're # actually running Superset, we will have already installed, # therefore it WILL exist. When unit tests are running, however, # it WILL NOT exist, so we fall back to reading package.json VERSION_STRING = _try_json_readversion(VERSION_INFO_FILE) or _try_json_readversion(PACKAGE_JSON_FILE )VERSION_SHA_LENGTH = 8 VERSION_SHA = _try_json_readsha(VERSION_INFO_FILE, VERSION_SHA_LENGTH)ROW_LIMIT = 50000 VIZ_ROW_LIMIT = 10000 # max rows retreieved when requesting samples from datasource in explore view SAMPLES_ROW_LIMIT = 1000 # max rows retrieved by filter select auto complete FILTER_SELECT_ROW_LIMIT = 10000 SUPERSET_WORKERS = 2 # deprecated SUPERSET_CELERY_WORKERS = 32 # deprecatedSUPERSET_WEBSERVER_PROTOCOL = "http" SUPERSET_WEBSERVER_ADDRESS = "0.0.0.0" SUPERSET_WEBSERVER_PORT = 8088# This is an important setting, and should be lower than your # [load balancer / proxy / envoy / kong / ...] timeout settings. # You should also make sure to configure your WSGI server # (gunicorn, nginx, apache, ...) timeout setting to be <= to this setting SUPERSET_WEBSERVER_TIMEOUT = 60# this 2 settings are used by dashboard period force refresh feature # When user choose auto force refresh frequency # < SUPERSET_DASHBOARD_PERIODICAL_REFRESH_LIMIT # they will see warning message in the Refresh Interval Modal. # please check PR #9886 SUPERSET_DASHBOARD_PERIODICAL_REFRESH_LIMIT = 0 SUPERSET_DASHBOARD_PERIODICAL_REFRESH_WARNING_MESSAGE = NoneSUPERSET_DASHBOARD_POSITION_DATA_LIMIT = 65535 CUSTOM_SECURITY_MANAGER = None SQLALCHEMY_TRACK_MODIFICATIONS = False # ---------------------------------------------------------# Your App secret key SECRET_KEY = ("\2\1thisismyscretkey\1\2\e\y\y\h" # pylint: disable=anomalous-backslash-in-string )# The SQLAlchemy connection string. SQLALCHEMY_DATABASE_URI = "sqlite:///" + os.path.join(DATA_DIR, "superset.db") # SQLALCHEMY_DATABASE_URI = 'mysql://myapp@localhost/myapp' # SQLALCHEMY_DATABASE_URI = 'postgresql://root:password@localhost/myapp'# In order to hook up a custom password store for all SQLACHEMY connections # implement a function that takes a single argument of type 'sqla.engine.url', # returns a password and set SQLALCHEMY_CUSTOM_PASSWORD_STORE. # # e.g.: # def lookup_password(url): # return 'secret' # SQLALCHEMY_CUSTOM_PASSWORD_STORE = lookup_password SQLALCHEMY_CUSTOM_PASSWORD_STORE = None# The limit of queries fetched for query search QUERY_SEARCH_LIMIT = 1000# Flask-WTF flag for CSRF WTF_CSRF_ENABLED = True# Add endpoints that need to be exempt from CSRF protection WTF_CSRF_EXEMPT_LIST = ["superset.views.core.log"]# Whether to run the web server in debug mode or not DEBUG = os.environ.get("FLASK_ENV") == "development" FLASK_USE_RELOAD = True# Superset allows server-side python stacktraces to be surfaced to the # user when this feature is on. This may has security implications # and it's more secure to turn it off in production settings. SHOW_STACKTRACE = True# Use all X-Forwarded headers when ENABLE_PROXY_FIX is True. # When proxying to a different port, set "x_port" to 0 to avoid downstream issues. ENABLE_PROXY_FIX = False PROXY_FIX_CONFIG = {"x_for": 1, "x_proto": 1, "x_host": 1, "x_port": 1, "x_prefix": 1}# ------------------------------ # GLOBALS FOR APP Builder # ------------------------------ # Uncomment to setup Your App name APP_NAME = "Superset"# Uncomment to setup an App icon APP_ICON = "/static/assets/images/superset-logo-horiz.png" APP_ICON_WIDTH = 126# Uncomment to specify where clicking the logo would take the user # e.g. setting it to '/welcome' would take the user to '/superset/welcome' LOGO_TARGET_PATH = None# Enables SWAGGER UI for superset openapi spec # ex: http://localhost:8080/swagger/v1 FAB_API_SWAGGER_UI = True# Druid query timezone # tz.tzutc() : Using utc timezone # tz.tzlocal() : Using local timezone # tz.gettz('Asia/Shanghai') : Using the time zone with specific name # [TimeZone List] # See: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones # other tz can be overridden by providing a local_config DRUID_TZ = tz.tzutc() DRUID_ANALYSIS_TYPES = ["cardinality"]# Legacy Druid NoSQL (native) connector # Druid supports a SQL interface in its newer versions. # Setting this flag to True enables the deprecated, API-based Druid # connector. This feature may be removed at a future date. DRUID_IS_ACTIVE = False# If Druid is active whether to include the links to scan/refresh Druid datasources. # This should be disabled if you are trying to wean yourself off of the Druid NoSQL # connector. DRUID_METADATA_LINKS_ENABLED = True# ---------------------------------------------------- # AUTHENTICATION CONFIG # ---------------------------------------------------- # The authentication type # AUTH_OID : Is for OpenID # AUTH_DB : Is for database (username/password) # AUTH_LDAP : Is for LDAP # AUTH_REMOTE_USER : Is for using REMOTE_USER from web server AUTH_TYPE = AUTH_DB# Uncomment to setup Full admin role name # AUTH_ROLE_ADMIN = 'Admin'# Uncomment to setup Public role name, no authentication needed # AUTH_ROLE_PUBLIC = 'Public'# Will allow user self registration # AUTH_USER_REGISTRATION = True# The default user self registration role # AUTH_USER_REGISTRATION_ROLE = "Public"# When using LDAP Auth, setup the LDAP server # AUTH_LDAP_SERVER = "ldap://ldapserver.new"# Uncomment to setup OpenID providers example for OpenID authentication # OPENID_PROVIDERS = [ # { 'name': 'Yahoo', 'url': 'https://open.login.yahoo.com/' }, # { 'name': 'Flickr', 'url': 'https://www.flickr.com/<username>' },# --------------------------------------------------- # Roles config # --------------------------------------------------- # Grant public role the same set of permissions as for the GAMMA role. # This is useful if one wants to enable anonymous users to view # dashboards. Explicit grant on specific datasets is still required. PUBLIC_ROLE_LIKE_GAMMA = False# --------------------------------------------------- # Babel config for translations # --------------------------------------------------- # Setup default language BABEL_DEFAULT_LOCALE = "en" # Your application default translation path BABEL_DEFAULT_FOLDER = "superset/translations" # The allowed translation for you app LANGUAGES = {"en": {"flag": "us", "name": "English"},"es": {"flag": "es", "name": "Spanish"},"it": {"flag": "it", "name": "Italian"},"fr": {"flag": "fr", "name": "French"},"zh": {"flag": "cn", "name": "Chinese"},"ja": {"flag": "jp", "name": "Japanese"},"de": {"flag": "de", "name": "German"},"pt": {"flag": "pt", "name": "Portuguese"},"pt_BR": {"flag": "br", "name": "Brazilian Portuguese"},"ru": {"flag": "ru", "name": "Russian"},"ko": {"flag": "kr", "name": "Korean"}, }# --------------------------------------------------- # Feature flags # --------------------------------------------------- # Feature flags that are set by default go here. Their values can be # overwritten by those specified under FEATURE_FLAGS in super_config.py # For example, DEFAULT_FEATURE_FLAGS = { 'FOO': True, 'BAR': False } here # and FEATURE_FLAGS = { 'BAR': True, 'BAZ': True } in superset_config.py # will result in combined feature flags of { 'FOO': True, 'BAR': True, 'BAZ': True } DEFAULT_FEATURE_FLAGS: Dict[str, bool] = {# Experimental feature introducing a client (browser) cache"CLIENT_CACHE": False,"ENABLE_EXPLORE_JSON_CSRF_PROTECTION": False,"KV_STORE": False,"PRESTO_EXPAND_DATA": False,# Exposes API endpoint to compute thumbnails"THUMBNAILS": False,"REDUCE_DASHBOARD_BOOTSTRAP_PAYLOAD": True,"SHARE_QUERIES_VIA_KV_STORE": False,"SIP_38_VIZ_REARCHITECTURE": False,"TAGGING_SYSTEM": False,"SQLLAB_BACKEND_PERSISTENCE": False,"LIST_VIEWS_SIP34_FILTER_UI": False, }# This is merely a default. FEATURE_FLAGS: Dict[str, bool] = {}# A function that receives a dict of all feature flags # (DEFAULT_FEATURE_FLAGS merged with FEATURE_FLAGS) # can alter it, and returns a similar dict. Note the dict of feature # flags passed to the function is a deepcopy of the dict in the config, # and can therefore be mutated without side-effect # # GET_FEATURE_FLAGS_FUNC can be used to implement progressive rollouts, # role-based features, or a full on A/B testing framework. # # from flask import g, request # def GET_FEATURE_FLAGS_FUNC(feature_flags_dict: Dict[str, bool]) -> Dict[str, bool]: # if hasattr(g, "user") and g.user.is_active: # feature_flags_dict['some_feature'] = g.user and g.user.id == 5 # return feature_flags_dict GET_FEATURE_FLAGS_FUNC: Optional[Callable[[Dict[str, bool]], Dict[str, bool]]] = None# --------------------------------------------------- # Thumbnail config (behind feature flag) # --------------------------------------------------- THUMBNAIL_SELENIUM_USER = "Admin" THUMBNAIL_CACHE_CONFIG: CacheConfig = {'CACHE_TYPE': 'redis', # 使用 Redis 'CACHE_REDIS_HOST': 'localhost', # 配置域名 'CACHE_REDIS_PORT': 6379, # 配置端口號 'CACHE_REDIS_URL': 'redis://localhost:6379' # 配置 URL }# --------------------------------------------------- # Image and file configuration # --------------------------------------------------- # The file upload folder, when using models with files UPLOAD_FOLDER = BASE_DIR + "/app/static/uploads/" UPLOAD_CHUNK_SIZE = 4096# The image upload folder, when using models with images IMG_UPLOAD_FOLDER = BASE_DIR + "/app/static/uploads/"# The image upload url, when using models with images IMG_UPLOAD_URL = "/static/uploads/" # Setup image size default is (300, 200, True) # IMG_SIZE = (300, 200, True)CACHE_DEFAULT_TIMEOUT = 60 * 60 * 24 CACHE_CONFIG: CacheConfig = {'CACHE_TYPE': 'redis', # 使用 Redis 'CACHE_REDIS_HOST': 'localhost', # 配置域名 'CACHE_REDIS_PORT': 6379, # 配置端口號 'CACHE_REDIS_URL': 'redis://localhost:6379' # 配置 URL }TABLE_NAMES_CACHE_CONFIG: CacheConfig = {'CACHE_TYPE': 'redis', # 使用 Redis 'CACHE_REDIS_HOST': 'localhost', # 配置域名 'CACHE_REDIS_PORT': 6379, # 配置端口號 'CACHE_REDIS_URL': 'redis://localhost:6379' # 配置 URL }# CORS Options ENABLE_CORS = False CORS_OPTIONS: Dict[Any, Any] = {}# Chrome allows up to 6 open connections per domain at a time. When there are more # than 6 slices in dashboard, a lot of time fetch requests are queued up and wait for # next available socket. PR #5039 is trying to allow domain sharding for Superset, # and this feature will be enabled by configuration only (by default Superset # doesn't allow cross-domain request). SUPERSET_WEBSERVER_DOMAINS = None# Allowed format types for upload on Database view EXCEL_EXTENSIONS = {"xlsx", "xls"} CSV_EXTENSIONS = {"csv", "tsv"} ALLOWED_EXTENSIONS = {*EXCEL_EXTENSIONS, *CSV_EXTENSIONS}# CSV Options: key/value pairs that will be passed as argument to DataFrame.to_csv # method. # note: index option should not be overridden CSV_EXPORT = {"encoding": "utf-8"}# --------------------------------------------------- # Time grain configurations # --------------------------------------------------- # List of time grains to disable in the application (see list of builtin # time grains in superset/db_engine_specs.builtin_time_grains). # For example: to disable 1 second time grain: # TIME_GRAIN_BLACKLIST = ['PT1S'] TIME_GRAIN_BLACKLIST: List[str] = []# Additional time grains to be supported using similar definitions as in # superset/db_engine_specs.builtin_time_grains. # For example: To add a new 2 second time grain: # TIME_GRAIN_ADDONS = {'PT2S': '2 second'} TIME_GRAIN_ADDONS: Dict[str, str] = {}# Implementation of additional time grains per engine. # The column to be truncated is denoted `{col}` in the expression. # For example: To implement 2 second time grain on clickhouse engine: # TIME_GRAIN_ADDON_EXPRESSIONS = { # 'clickhouse': { # 'PT2S': 'toDateTime(intDiv(toUInt32(toDateTime({col})), 2)*2)' # } # } TIME_GRAIN_ADDON_EXPRESSIONS: Dict[str, Dict[str, str]] = {}# --------------------------------------------------- # List of viz_types not allowed in your environment # For example: Blacklist pivot table and treemap: # VIZ_TYPE_BLACKLIST = ['pivot_table', 'treemap'] # ---------------------------------------------------VIZ_TYPE_BLACKLIST: List[str] = []# --------------------------------------------------- # List of data sources not to be refreshed in druid cluster # ---------------------------------------------------DRUID_DATA_SOURCE_BLACKLIST: List[str] = []# -------------------------------------------------- # Modules, datasources and middleware to be registered # -------------------------------------------------- DEFAULT_MODULE_DS_MAP = OrderedDict([("superset.connectors.sqla.models", ["SqlaTable"]),("superset.connectors.druid.models", ["DruidDatasource"]),] ) ADDITIONAL_MODULE_DS_MAP: Dict[str, List[str]] = {} ADDITIONAL_MIDDLEWARE: List[Callable[..., Any]] = []# 1) https://docs.python-guide.org/writing/logging/ # 2) https://docs.python.org/2/library/logging.config.html# Default configurator will consume the LOG_* settings below LOGGING_CONFIGURATOR = DefaultLoggingConfigurator()# Console Log SettingsLOG_FORMAT = "%(asctime)s:%(levelname)s:%(name)s:%(message)s" LOG_LEVEL = "DEBUG"# --------------------------------------------------- # Enable Time Rotate Log Handler # --------------------------------------------------- # LOG_LEVEL = DEBUG, INFO, WARNING, ERROR, CRITICALENABLE_TIME_ROTATE = False TIME_ROTATE_LOG_LEVEL = "DEBUG" FILENAME = os.path.join(DATA_DIR, "superset.log") ROLLOVER = "midnight" INTERVAL = 1 BACKUP_COUNT = 30# Custom logger for auditing queries. This can be used to send ran queries to a # structured immutable store for auditing purposes. The function is called for # every query ran, in both SQL Lab and charts/dashboards. # def QUERY_LOGGER( # database, # query, # schema=None, # user=None, # client=None, # security_manager=None, # log_params=None, # ): # pass QUERY_LOGGER = None# Set this API key to enable Mapbox visualizations MAPBOX_API_KEY = os.environ.get("MAPBOX_API_KEY", "")# Maximum number of rows returned from a database # in async mode, no more than SQL_MAX_ROW will be returned and stored # in the results backend. This also becomes the limit when exporting CSVs SQL_MAX_ROW = 100000# Maximum number of rows displayed in SQL Lab UI # Is set to avoid out of memory/localstorage issues in browsers. Does not affect # exported CSVs DISPLAY_MAX_ROW = 10000# Default row limit for SQL Lab queries. Is overridden by setting a new limit in # the SQL Lab UI DEFAULT_SQLLAB_LIMIT = 1000# Maximum number of tables/views displayed in the dropdown window in SQL Lab. MAX_TABLE_NAMES = 3000# Adds a warning message on sqllab save query and schedule query modals. SQLLAB_SAVE_WARNING_MESSAGE = None SQLLAB_SCHEDULE_WARNING_MESSAGE = None# If defined, shows this text in an alert-warning box in the navbar # one example use case may be "STAGING" to make it clear that this is # not the production version of the site. WARNING_MSG = None# Default celery config is to use SQLA as a broker, in a production setting # you'll want to use a proper broker as specified here: # http://docs.celeryproject.org/en/latest/getting-started/brokers/index.htmlclass CeleryConfig: # pylint: disable=too-few-public-methodsBROKER_URL = "sqla+sqlite:///celerydb.sqlite"CELERY_IMPORTS = ("superset.sql_lab", "superset.tasks")CELERY_RESULT_BACKEND = "db+sqlite:///celery_results.sqlite"CELERYD_LOG_LEVEL = "DEBUG"CELERYD_PREFETCH_MULTIPLIER = 1CELERY_ACKS_LATE = FalseCELERY_ANNOTATIONS = {"sql_lab.get_sql_results": {"rate_limit": "100/s"},"email_reports.send": {"rate_limit": "1/s","time_limit": 120,"soft_time_limit": 150,"ignore_result": True,},}CELERYBEAT_SCHEDULE = {"email_reports.schedule_hourly": {"task": "email_reports.schedule_hourly","schedule": crontab(minute=1, hour="*"),}}CELERY_CONFIG = CeleryConfig # pylint: disable=invalid-name# Set celery config to None to disable all the above configuration # CELERY_CONFIG = None# Additional static HTTP headers to be served by your Superset server. Note # Flask-Talisman applies the relevant security HTTP headers. # # DEFAULT_HTTP_HEADERS: sets default values for HTTP headers. These may be overridden # within the app # OVERRIDE_HTTP_HEADERS: sets override values for HTTP headers. These values will # override anything set within the app DEFAULT_HTTP_HEADERS: Dict[str, Any] = {} OVERRIDE_HTTP_HEADERS: Dict[str, Any] = {} HTTP_HEADERS: Dict[str, Any] = {}# The db id here results in selecting this one as a default in SQL Lab DEFAULT_DB_ID = None# Timeout duration for SQL Lab synchronous queries SQLLAB_TIMEOUT = 30# Timeout duration for SQL Lab query validation SQLLAB_VALIDATION_TIMEOUT = 10# SQLLAB_DEFAULT_DBID SQLLAB_DEFAULT_DBID = None# The MAX duration (in seconds) a query can run for before being killed # by celery. SQLLAB_ASYNC_TIME_LIMIT_SEC = 60 * 60 * 6# Some databases support running EXPLAIN queries that allow users to estimate # query costs before they run. These EXPLAIN queries should have a small # timeout. SQLLAB_QUERY_COST_ESTIMATE_TIMEOUT = 10 # seconds# Flag that controls if limit should be enforced on the CTA (create table as queries). SQLLAB_CTAS_NO_LIMIT = False# This allows you to define custom logic around the "CREATE TABLE AS" or CTAS feature # in SQL Lab that defines where the target schema should be for a given user. # Database `CTAS Schema` has a precedence over this setting. # Example below returns a username and CTA queries will write tables into the schema # name `username` # SQLLAB_CTAS_SCHEMA_NAME_FUNC = lambda database, user, schema, sql: user.username # This is move involved example where depending on the database you can leverage data # available to assign schema for the CTA query: # def compute_schema_name(database: Database, user: User, schema: str, sql: str) -> str: # if database.name == 'mysql_payments_slave': # return 'tmp_superset_schema' # if database.name == 'presto_gold': # return user.username # if database.name == 'analytics': # if 'analytics' in [r.name for r in user.roles]: # return 'analytics_cta' # else: # return f'tmp_{schema}' # Function accepts database object, user object, schema name and sql that will be run. SQLLAB_CTAS_SCHEMA_NAME_FUNC: Optional[Callable[["Database", "models.User", str, str], str] ] = None# If enabled, it can be used to store the results of long-running queries # in SQL Lab by using the "Run Async" button/feature RESULTS_BACKEND: Optional[BaseCache] = None# Use PyArrow and MessagePack for async query results serialization, # rather than JSON. This feature requires additional testing from the # community before it is fully adopted, so this config option is provided # in order to disable should breaking issues be discovered. RESULTS_BACKEND_USE_MSGPACK = True# The S3 bucket where you want to store your external hive tables created # from CSV files. For example, 'companyname-superset' CSV_TO_HIVE_UPLOAD_S3_BUCKET = None# The directory within the bucket specified above that will # contain all the external tables CSV_TO_HIVE_UPLOAD_DIRECTORY = "EXTERNAL_HIVE_TABLES/" # Function that creates upload directory dynamically based on the # database used, user and schema provided. CSV_TO_HIVE_UPLOAD_DIRECTORY_FUNC: Callable[["Database", "models.User", str], Optional[str] ] = lambda database, user, schema: CSV_TO_HIVE_UPLOAD_DIRECTORY# The namespace within hive where the tables created from # uploading CSVs will be stored. UPLOADED_CSV_HIVE_NAMESPACE: Optional[str] = None# Function that computes the allowed schemas for the CSV uploads. # Allowed schemas will be a union of schemas_allowed_for_csv_upload # db configuration and a result of this function.# mypy doesn't catch that if case ensures list content being always str ALLOWED_USER_CSV_SCHEMA_FUNC: Callable[["Database", "models.User"], List[str] ] = lambda database, user: [UPLOADED_CSV_HIVE_NAMESPACE ] if UPLOADED_CSV_HIVE_NAMESPACE else []# Values that should be treated as nulls for the csv uploads. CSV_DEFAULT_NA_NAMES = list(STR_NA_VALUES)# A dictionary of items that gets merged into the Jinja context for # SQL Lab. The existing context gets updated with this dictionary, # meaning values for existing keys get overwritten by the content of this # dictionary. JINJA_CONTEXT_ADDONS: Dict[str, Callable[..., Any]] = {}# A dictionary of macro template processors that gets merged into global # template processors. The existing template processors get updated with this # dictionary, which means the existing keys get overwritten by the content of this # dictionary. The customized addons don't necessarily need to use jinjia templating # language. This allows you to define custom logic to process macro template. CUSTOM_TEMPLATE_PROCESSORS: Dict[str, Type[BaseTemplateProcessor]] = {}# Roles that are controlled by the API / Superset and should not be changes # by humans. ROBOT_PERMISSION_ROLES = ["Public", "Gamma", "Alpha", "Admin", "sql_lab"]CONFIG_PATH_ENV_VAR = "SUPERSET_CONFIG_PATH"# If a callable is specified, it will be called at app startup while passing # a reference to the Flask app. This can be used to alter the Flask app # in whatever way. # example: FLASK_APP_MUTATOR = lambda x: x.before_request = f FLASK_APP_MUTATOR = None# Set this to false if you don't want users to be able to request/grant # datasource access requests from/to other users. ENABLE_ACCESS_REQUEST = False# smtp server configuration EMAIL_NOTIFICATIONS = False # all the emails are sent using dryrun SMTP_HOST = "localhost" SMTP_STARTTLS = True SMTP_SSL = False SMTP_USER = "superset" SMTP_PORT = 25 SMTP_PASSWORD = "superset" SMTP_MAIL_FROM = "superset@superset.com"ENABLE_CHUNK_ENCODING = False# Whether to bump the logging level to ERROR on the flask_appbuilder package # Set to False if/when debugging FAB related issues like # permission management SILENCE_FAB = TrueFAB_ADD_SECURITY_VIEWS = True FAB_ADD_SECURITY_PERMISSION_VIEW = False FAB_ADD_SECURITY_VIEW_MENU_VIEW = False FAB_ADD_SECURITY_PERMISSION_VIEWS_VIEW = False# The link to a page containing common errors and their resolutions # It will be appended at the bottom of sql_lab errors. TROUBLESHOOTING_LINK = ""# CSRF token timeout, set to None for a token that never expires WTF_CSRF_TIME_LIMIT = 60 * 60 * 24 * 7# This link should lead to a page with instructions on how to gain access to a # Datasource. It will be placed at the bottom of permissions errors. PERMISSION_INSTRUCTIONS_LINK = ""# Integrate external Blueprints to the app by passing them to your # configuration. These blueprints will get integrated in the app BLUEPRINTS: List[Blueprint] = []# Provide a callable that receives a tracking_url and returns another # URL. This is used to translate internal Hadoop job tracker URL # into a proxied one TRACKING_URL_TRANSFORMER = lambda x: x# Interval between consecutive polls when using Hive Engine HIVE_POLL_INTERVAL = 5# Allow for javascript controls components # this enables programmers to customize certain charts (like the # geospatial ones) by inputing javascript in controls. This exposes # an XSS security vulnerability ENABLE_JAVASCRIPT_CONTROLS = False# The id of a template dashboard that should be copied to every new user DASHBOARD_TEMPLATE_ID = None# A callable that allows altering the database conneciton URL and params # on the fly, at runtime. This allows for things like impersonation or # arbitrary logic. For instance you can wire different users to # use different connection parameters, or pass their email address as the # username. The function receives the connection uri object, connection # params, the username, and returns the mutated uri and params objects. # Example: # def DB_CONNECTION_MUTATOR(uri, params, username, security_manager, source): # user = security_manager.find_user(username=username) # if user and user.email: # uri.username = user.email # return uri, params # # Note that the returned uri and params are passed directly to sqlalchemy's # as such `create_engine(url, **params)` DB_CONNECTION_MUTATOR = None# A function that intercepts the SQL to be executed and can alter it. # The use case is can be around adding some sort of comment header # with information such as the username and worker node information # # def SQL_QUERY_MUTATOR(sql, username, security_manager): # dttm = datetime.now().isoformat() # return f"-- [SQL LAB] {username} {dttm}\n{sql}" SQL_QUERY_MUTATOR = None# Enable / disable scheduled email reports ENABLE_SCHEDULED_EMAIL_REPORTS = False# Enable / disable Alerts, where users can define custom SQL that # will send emails with screenshots of charts or dashboards periodically # if it meets the criteria ENABLE_ALERTS = False# Slack API token for the superset reports SLACK_API_TOKEN = None SLACK_PROXY = None# If enabled, certail features are run in debug mode # Current list: # * Emails are sent using dry-run mode (logging only) SCHEDULED_EMAIL_DEBUG_MODE = False# Email reports - minimum time resolution (in minutes) for the crontab EMAIL_REPORTS_CRON_RESOLUTION = 15# The MAX duration (in seconds) a email schedule can run for before being killed # by celery. EMAIL_ASYNC_TIME_LIMIT_SEC = 300# Email report configuration # From address in emails EMAIL_REPORT_FROM_ADDRESS = "reports@superset.org"# Send bcc of all reports to this address. Set to None to disable. # This is useful for maintaining an audit trail of all email deliveries. EMAIL_REPORT_BCC_ADDRESS = None# User credentials to use for generating reports # This user should have permissions to browse all the dashboards and # slices. # TODO: In the future, login as the owner of the item to generate reports EMAIL_REPORTS_USER = "admin" EMAIL_REPORTS_SUBJECT_PREFIX = "[Report] "# The webdriver to use for generating reports. Use one of the following # firefox # Requires: geckodriver and firefox installations # Limitations: can be buggy at times # chrome: # Requires: headless chrome # Limitations: unable to generate screenshots of elements EMAIL_REPORTS_WEBDRIVER = "firefox"# Window size - this will impact the rendering of the data WEBDRIVER_WINDOW = {"dashboard": (1600, 2000), "slice": (3000, 1200)}# Any config options to be passed as-is to the webdriver WEBDRIVER_CONFIGURATION: Dict[Any, Any] = {}# The base URL to query for accessing the user interface WEBDRIVER_BASEURL = "http://0.0.0.0:8080/" # The base URL for the email report hyperlinks. WEBDRIVER_BASEURL_USER_FRIENDLY = WEBDRIVER_BASEURL # Time in seconds, selenium will wait for the page to load # and render for the email report. EMAIL_PAGE_RENDER_WAIT = 30# Send user to a link where they can report bugs BUG_REPORT_URL = None# Send user to a link where they can read more about Superset DOCUMENTATION_URL = None DOCUMENTATION_TEXT = "Documentation" DOCUMENTATION_ICON = None # Recommended size: 16x16# Enables the replacement react views for all the FAB views (list, edit, show) with # designs introduced in SIP-34: https://github.com/apache/incubator-superset/issues/8976 # This is a work in progress so not all features available in FAB have been implemented ENABLE_REACT_CRUD_VIEWS = False# What is the Last N days relative in the time selector to: # 'today' means it is midnight (00:00:00) in the local timezone # 'now' means it is relative to the query issue time # If both start and end time is set to now, this will make the time # filter a moving window. By only setting the end time to now, # start time will be set to midnight, while end will be relative to # the query issue time. DEFAULT_RELATIVE_START_TIME = "today" DEFAULT_RELATIVE_END_TIME = "today"# Configure which SQL validator to use for each engine SQL_VALIDATORS_BY_ENGINE = {"presto": "PrestoDBSQLValidator"}# Do you want Talisman enabled? TALISMAN_ENABLED = False # If you want Talisman, how do you want it configured?? TALISMAN_CONFIG = {"content_security_policy": None,"force_https": True,"force_https_permanent": False, }# Note that: RowLevelSecurityFilter is only given by default to the Admin role # and the Admin Role does have the all_datasources security permission. # But, if users create a specific role with access to RowLevelSecurityFilter MVC # and a custom datasource access, the table dropdown will not be correctly filtered # by that custom datasource access. So we are assuming a default security config, # a custom security config could potentially give access to setting filters on # tables that users do not have access to. ENABLE_ROW_LEVEL_SECURITY = False# # Flask session cookie options # # See https://flask.palletsprojects.com/en/1.1.x/security/#set-cookie-options # for details # SESSION_COOKIE_HTTPONLY = True # Prevent cookie from being read by frontend JS? SESSION_COOKIE_SECURE = False # Prevent cookie from being transmitted over non-tls? SESSION_COOKIE_SAMESITE = "Lax" # One of [None, 'Lax', 'Strict']# Flask configuration variables SEND_FILE_MAX_AGE_DEFAULT = 60 * 60 * 24 * 365 # Cache static resources# URI to database storing the example data, points to # SQLALCHEMY_DATABASE_URI by default if set to `None` SQLALCHEMY_EXAMPLES_URI = None# Some sqlalchemy connection strings can open Superset to security risks. # Typically these should not be allowed. PREVENT_UNSAFE_DB_CONNECTIONS = True# Path used to store SSL certificates that are generated when using custom certs. # Defaults to temporary directory. # Example: SSL_CERT_PATH = "/certs" SSL_CERT_PATH: Optional[str] = None# SIP-15 should be enabled for all new Superset deployments which ensures that the time # range endpoints adhere to [start, end). For existing deployments admins should provide # a dedicated period of time to allow chart producers to update their charts before # mass migrating all charts to use the [start, end) interval. # # Note if no end date for the grace period is specified then the grace period is # indefinite. SIP_15_ENABLED = True SIP_15_GRACE_PERIOD_END: Optional[date] = None # exclusive SIP_15_DEFAULT_TIME_RANGE_ENDPOINTS = ["unknown", "inclusive"] SIP_15_TOAST_MESSAGE = ("Action Required: Preview then save your chart using the "'new time range endpoints <a target="_blank" href="{url}" ''class="alert-link">here</a>.' )# SQLA table mutator, every time we fetch the metadata for a certain table # (superset.connectors.sqla.models.SqlaTable), we call this hook # to allow mutating the object with this callback. # This can be used to set any properties of the object based on naming # conventions and such. You can find examples in the tests. SQLA_TABLE_MUTATOR = lambda table: tableif CONFIG_PATH_ENV_VAR in os.environ:# Explicitly import config module that is not necessarily in pythonpath; useful# for case where app is being executed via pex.try:cfg_path = os.environ[CONFIG_PATH_ENV_VAR]module = sys.modules[__name__]override_conf = imp.load_source("superset_config", cfg_path)for key in dir(override_conf):if key.isupper():setattr(module, key, getattr(override_conf, key))print(f"Loaded your LOCAL configuration at [{cfg_path}]")except Exception:logger.exception("Failed to import config for %s=%s", CONFIG_PATH_ENV_VAR, cfg_path)raise elif importlib.util.find_spec("superset_config"):try:from superset_config import * # pylint: disable=import-error,wildcard-import,unused-wildcard-importimport superset_config # pylint: disable=import-errorprint(f"Loaded your LOCAL configuration at [{superset_config.__file__}]")except Exception:logger.exception("Found but failed to import local superset_config")raise

Reference:

[1]Caching charts in Superset

[2]Superset Timeouts

[3]cache的源碼

[4]使用 Redis 做 Superset 的緩存

總結

以上是生活随笔為你收集整理的云主机superset接入redis缓存的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

中文字幕在线免费观看 | 欧美最猛性xxxxx免费 | 西西人体4444www高清视频 | 人交video另类hd | 精品国产91亚洲一区二区三区www | 亚洲精品高清在线观看 | 日日夜夜天天综合 | 波多野结衣动态图 | 在线色亚洲 | 色姑娘综合天天 | 亚洲综合色婷婷 | 91丨九色丨国产在线观看 | 国产美女被啪进深处喷白浆视频 | 国产精品一区二区精品视频免费看 | 久久精品综合一区 | av韩国在线 | 国产精品美女久久久久久免费 | 免费99| 九九九九热精品免费视频点播观看 | 国产成人精品亚洲a | 国产成年免费视频 | 亚洲国产精品va在线看黑人 | 蜜臀av一区二区 | 超碰人人91 | 久久久电影 | 国产亚洲精品久久久久久网站 | 91最新国产| 日韩欧美精品一区二区三区经典 | 日韩电影一区二区三区在线观看 | 香蕉视频在线免费看 | 日韩av一区二区在线播放 | www.黄色片.com| 亚洲精品久久视频 | av一级免费 | 成人国产精品久久久春色 | 97人人人| 亚洲国产精品成人av | av免费在线网站 | 日日碰狠狠添天天爽超碰97久久 | 亚洲精品色视频 | 丁香激情视频 | 四虎小视频 | 色网站在线免费 | 综合色在线 | 国产群p| 成人av一区二区在线观看 | 国产精品久久麻豆 | 亚洲精品乱码久久久久久蜜桃动漫 | 午夜视频一区二区 | 欧美精品一区二区在线播放 | 天天射综合网站 | 国产色区 | 视频国产在线观看18 | 欧美 日韩 久久 | 亚洲精品午夜视频 | 亚洲在线a | 1000部18岁以下禁看视频 | 亚洲aⅴ在线 | 日韩av免费大片 | 国产精品影音先锋 | 中国一区二区视频 | 国产亚洲综合在线 | 最近中文字幕视频完整版 | 国产精品小视频网站 | 亚洲天堂自拍视频 | 欧美日韩视频在线播放 | 亚洲欧美va | 高清国产午夜精品久久久久久 | 久久精品一区二区三区视频 | 国产视频在线一区二区 | 中国一级片在线观看 | 婷婷色网址| 免费网站色 | 91亚洲精品国偷拍 | 国产一二三四在线观看视频 | 精品国产一区二区久久 | 国产成人精品一区二区三区福利 | 国产裸体永久免费视频网站 | 欧美日韩免费观看一区二区三区 | 久久国产精品视频免费看 | 日韩在线视频看看 | 青青久草在线 | 精品久久在线 | 99欧美| 国产伦精品一区二区三区四区视频 | 天天干国产 | 99精品视频在线观看 | 久久久久亚洲精品 | 亚洲精品国产综合久久 | 久久精品视频日本 | 91中文字幕在线视频 | 国产亚洲精品久久久久久久久久 | 日韩精品免费一线在线观看 | 91在线观看视频网站 | 国产99久久精品一区二区永久免费 | 在线播放 日韩专区 | 欧美俄罗斯性视频 | 99精品国产一区二区三区不卡 | 国产精品xxxx18a99| 国产精品久久久久久av | 久久精品美女视频 | 国产精品入口a级 | 国产成人精品亚洲a | 久久精品99精品国产香蕉 | 麻豆视频网址 | 久久黄色精品视频 | 久久久毛片 | 国产一区二区三精品久久久无广告 | 国产免费又粗又猛又爽 | 美女久久一区 | 婷婷激情小说网 | 视频在线观看99 | 激情丁香5月 | 九九视频这里只有精品 | 中文字幕91在线 | 91人人射 | 亚洲精品欧美视频 | 狠狠88综合久久久久综合网 | 国产免费视频一区二区裸体 | 国产一区二区高清不卡 | 99久久婷婷国产综合精品 | 成人免费亚洲 | 久久公开视频 | 男女激情片在线观看 | 91久久精| 免费一级片在线观看 | 日韩黄色免费电影 | 黄色a视频 | 久久av福利| 成人欧美亚洲 | 亚洲精品午夜aaa久久久 | 精品毛片一区二区免费看 | 成人黄色免费观看 | 亚洲理论电影 | 日韩av在线免费播放 | 92精品国产成人观看免费 | 欧美国产日韩一区二区三区 | 亚洲国产成人精品在线观看 | 色婷婷激情电影 | 日韩激情视频 | 日日日天天天 | 久久精品高清 | 免费网站污 | 国产女人18毛片水真多18精品 | 九九导航 | 精品亚洲视频在线观看 | 国产精品mv在线观看 | 成人一区二区三区在线观看 | 欧美黑人性爽 | 久久无码精品一区二区三区 | 欧美日韩一区二区三区在线免费观看 | 五月天视频网站 | 毛片1000部免费看 | 五月综合激情网 | 热久久免费国产视频 | 91看片在线播放 | 美女视频久久黄 | 国产最新在线 | 韩国视频一区二区三区 | www.超碰 | 天天综合网国产 | 国产97色在线 | 免费精品人在线二线三线 | 久久综合久久综合这里只有精品 | 91九色视频在线观看 | 五月婷婷操 | 色婷婷婷| 91在线91拍拍在线91 | 一级黄色电影网站 | 欧美日韩国产高清视频 | 一级a毛片高清视频 | 久久精品一二三区 | 99r国产精品 | 亚洲.www | 久久精品欧美日韩精品 | 波多野结衣一区二区三区中文字幕 | 亚洲高清视频在线播放 | 在线观看91精品视频 | 亚洲一级黄色av | 亚洲免费专区 | 夜色成人网 | 精品欧美一区二区三区久久久 | 天天操天天操天天操天天 | 精品一区二区影视 | 亚洲理论片在线观看 | 亚洲色图22p | 天天射天天色天天干 | 伊人久久精品久久亚洲一区 | 黄色在线视频网址 | 久草国产精品 | 亚洲综合激情小说 | 色一级片 | 日日干夜夜操视频 | 热久精品 | 97视频中文字幕 | 国产精品粉嫩 | 一本一本久久a久久精品牛牛影视 | 日本最大色倩网站www | 国产精品爽爽久久久久久蜜臀 | 久久久久久久久久久网站 | 中文字幕在线国产 | 亚洲欧美日韩一区二区三区在线观看 | 91九色视频网站 | 日韩电影在线观看一区二区 | av网址在线播放 | 四虎国产精品成人免费4hu | 欧洲精品码一区二区三区免费看 | 美女精品网站 | 东方av免费在线观看 | 免费在线日韩 | 国产精品久久久久一区二区三区 | 国产日韩av在线 | 亚洲精品综合一区二区 | 久久激情网站 | 国产经典 欧美精品 | 又爽又黄又刺激的视频 | 欧美91成人网 | 探花视频免费在线观看 | 色a网 | 日韩欧美xx| 激情久久五月 | 中文字幕在线视频免费播放 | 国产精品久久婷婷六月丁香 | 欧美影院久久 | 欧美色久 | 久草久草久草久草 | 亚洲一区久久久 | 四虎成人精品永久免费av | 中文字幕久久网 | 久草久草在线观看 | 91在线成人 | 久草在线免费资源 | 国产又粗又猛又黄又爽视频 | www成人av| 伊人婷婷综合 | 一本到视频在线观看 | 麻豆国产精品va在线观看不卡 | 伊人午夜 | 五月婷婷黄色网 | 亚洲美女视频在线观看 | 国内精品久久久久久久影视简单 | 天天曰天天 | 国产精品自产拍在线观看 | 四虎国产永久在线精品 | 午夜免费久久看 | 8x8x在线观看视频 | 国产一二区免费视频 | 国产伦精品一区二区三区在线 | 88av视频| 日韩免费在线 | 国产美女主播精品一区二区三区 | 欧美精品亚洲精品 | 婷婷亚洲最大 | 天天天综合网 | 国产在线欧美在线 | 91看片淫黄大片在线播放 | 中文字幕久久精品一区 | 亚洲最大成人网4388xx | 99久久er热在这里只有精品15 | 久久天天躁夜夜躁狠狠85麻豆 | 久久久久亚洲精品男人的天堂 | 欧美激情综合色综合啪啪五月 | 欧美成人按摩 | 亚洲精品在线看 | 精品久久久久久亚洲综合网 | 久久男人免费视频 | 婷婷丁香七月 | 色婷婷www| 亚洲精品国产第一综合99久久 | 久草青青在线观看 | 免费在线观看不卡av | 黄污在线观看 | 亚洲一级黄色 | 免费看一级黄色大全 | 久久精品九色 | 久久9视频 | 亚洲天堂视频在线 | 天天摸夜夜操 | 久久国产精品99久久久久久进口 | 久久亚洲私人国产精品 | 精品久久久久久久久久久久久久久久 | 人人插人人草 | 久久精品视频在线观看免费 | 天天干天天做天天操 | 四月婷婷在线观看 | 国产九九热视频 | 热99在线视频 | 国产精品18videosex性欧美 | 五月激情av | 一本一道波多野毛片中文在线 | 色黄www小说 | 婷婷色中文字幕 | 在线 视频 亚洲 | 夜夜嗨av色一区二区不卡 | 国产精品久久久久免费观看 | 午夜三级福利 | 国产精品女人久久久 | 免费黄色a网站 | 日韩免费av网址 | 人人插人人搞 | a级免费观看 | 免费观看成人 | 天天操福利视频 | 中文字幕视频观看 | 夜夜视频 | 国产涩涩在线观看 | 国产精品男女视频 | 丰满少妇在线观看资源站 | 国产成人a v电影 | 日韩av免费在线电影 | 国产黄在线播放 | 亚洲激情在线视频 | 99在线精品免费视频九九视 | 在线成人欧美 | av资源网在线播放 | 久久久这里有精品 | 91电影福利 | 九九久久久久久久久激情 | 国产高清中文字幕 | 国内精品在线一区 | 精品在线一区二区三区 | 天天射日 | 久久综合九色欧美综合狠狠 | 97人人澡人人爽人人模亚洲 | 久草影视在线 | www.黄色小说.com | 香蕉97视频观看在线观看 | 香蕉视频导航 | 夜夜操夜夜干 | 超碰电影在线观看 | 婷婷久久一区二区三区 | 婷婷久久一区二区三区 | 久久亚洲影院 | 粉嫩一区二区三区粉嫩91 | 91av超碰| 天堂av官网 | 天天躁日日躁狠狠躁 | 色 免费观看| 日韩大片在线看 | 国产精品久久在线观看 | www.久久婷婷 | 日韩电影在线观看一区二区 | 日韩免费在线网站 | 91网站观看 | www.久久久久 | 最新中文字幕视频 | 丁香六月色| 精品国产乱码久久久久久久 | 99精品久久久| 日韩在线视频播放 | 午夜国产在线观看 | 涩涩网站在线观看 | 国产精品欧美一区二区 | 五月激情丁香婷婷 | 欧美日韩高清在线观看 | 欧美污污视频 | a视频在线观看 | 精品一区二区电影 | 亚洲理论在线观看电影 | 欧洲高潮三级做爰 | 99免费视频 | 97精品国产97久久久久久粉红 | 99热这里只有精品国产首页 | 国产在线一区二区三区播放 | 欧美一区二区三区免费观看 | 久久字幕 | 激情开心网站 | 国产亚洲精品久久久久秋 | 亚洲精品午夜久久久 | 欧美精品色 | 成人久久综合 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 天天玩天天操天天射 | 九九九视频在线 | 在线激情网| 一级一片免费观看 | 一级一片免费观看 | a级成人毛片 | 欧美亚洲国产精品久久高清浪潮 | 99综合视频| 久久精品一区二区三区四区 | 视频直播国产精品 | 激情欧美丁香 | 欧美久久精品 | 精品超碰 | 亚洲午夜精品久久久 | 国产女人40精品一区毛片视频 | 视频在线观看亚洲 | 久久久亚洲网站 | 亚洲日本在线视频观看 | 日日色综合 | 午夜精品久久久久久久99热影院 | 国产精品第十页 | 一本一道久久a久久精品蜜桃 | 五月婷婷伊人网 | 日韩精品视频在线免费观看 | 亚洲日韩中文字幕在线播放 | 国产 一区二区三区 在线 | 天天插天天操天天干 | 成人四虎| 欧美激情精品久久久久久免费印度 | 日本3级在线观看 | 成人电影毛片 | 狠狠色丁香久久婷婷综合五月 | 亚洲国产成人高清精品 | 91精品1区2区 | 日韩欧美一区二区在线播放 | 热精品 | 黄色三级网站在线观看 | 免费看特级毛片 | 色综合在| 97超碰人人| 欧美日视频| 97综合网 | 色婷婷亚洲精品 | 亚洲精品国偷拍自产在线观看蜜桃 | 午夜久久美女 | 国产一区在线免费 | 黄色成人av | 国内精品免费久久影院 | 成人一区二区三区在线观看 | 亚洲黄色在线 | 在线观看中文字幕视频 | 日本精品视频在线播放 | 中文字幕专区高清在线观看 | 91漂亮少妇露脸在线播放 | 午夜国产在线 | 免费欧美高清视频 | 久久综合在线 | 久久综合久久八八 | 天天干,狠狠干 | 亚洲黄色片一级 | 有没有在线观看av | 青青草国产免费 | 日韩一区正在播放 | 日韩中文在线视频 | 精品国产综合区久久久久久 | 欧美日韩免费观看一区=区三区 | 国产精品一区二区三区在线免费观看 | 在线视频免费观看 | 国产免费av一区二区三区 | 免费碰碰| 九九热99视频 | 国产色影院 | 色中文字幕在线观看 | 久久亚洲日本 | 韩国三级在线一区 | 96亚洲精品久久久蜜桃 | 亚洲综合五月 | 免费观看完整版无人区 | 久热爱| 综合久久精品 | 91av视频网站 | av免费在线播放 | 日批网站在线观看 | av中文在线播放 | 久久99网站 | 成人黄色免费在线观看 | 在线中文日韩 | 国产精品一区二区三区四 | 国产精品av在线免费观看 | 久久麻豆视频 | 国产色拍拍拍拍在线精品 | 人人舔人人舔 | 久久欧美在线电影 | 伊人色综合久久天天网 | 五月婷婷六月丁香 | 亚洲第一久久久 | 成人禁用看黄a在线 | 亚洲天堂精品视频在线观看 | 婷婷激情5月天 | 一区二区三区精品在线视频 | 色在线视频网 | 久久久久久久久综合 | 久久亚洲私人国产精品va | 久久国产免 | www.啪啪.com| 久久精品日产第一区二区三区乱码 | 日日干av | 免费观看黄 | 久草在线综合网 | 97视频播放 | 国产区精品视频 | 色丁香综合 | www日韩在线观看 | 免费三级黄色片 | 午夜精品一区二区三区在线观看 | 91丨porny丨九色 | 婷婷5月激情5月 | 欧美日韩精品二区第二页 | 激情电影影院 | 草久在线播放 | 超碰97人人在线 | 久久免费视频1 | 中文字幕日韩国产 | 亚洲视频在线观看免费 | 久久久久综合视频 | 亚洲免费国产视频 | 国产精品久久久久久久免费 | 手机在线中文字幕 | 黄色毛片视频免费观看中文 | 黄网站a| 国产精品女同一区二区三区久久夜 | 国产日韩精品一区二区三区在线 | 日本久久成人 | 亚洲精品短视频 | 成 人 免费 黄 色 视频 | 最近中文字幕免费av | 久久久久国产一区二区三区四区 | 日韩免费视频观看 | 99性视频 | 亚洲精品乱码久久久久久写真 | 91精品国产欧美一区二区 | 91精品国产成人观看 | 欧美极度另类性三渗透 | av观看免费在线 | 91丨九色丨高潮 | 精品a视频 | 免费在线国产黄色 | 黄色大片视频网站 | 国产成人精品一区在线 | 久久精品观看 | 天天爽天天爽 | 国产91丝袜在线播放动漫 | www婷婷 | .精品久久久麻豆国产精品 亚洲va欧美 | 91免费视频网站在线观看 | 色在线免费观看 | 手机在线视频福利 | 九九久 | 久久午夜鲁丝片 | 午夜在线观看影院 | 91九色在线播放 | 国产一区欧美在线 | 国产亚洲综合性久久久影院 | 手机在线视频福利 | 中文字幕一区二区三区在线观看 | 日韩欧美视频免费看 | 一区二区三区免费在线播放 | 91视频在线免费下载 | 青春草视频 | 国产精品免费久久久 | 婷婷在线免费观看 | 久久九精品 | 久久97超碰 | 精品国产伦一区二区三区观看方式 | 在线视频 影院 | 国产亚洲精品成人av久久影院 | 在线观看你懂的网址 | 久久免费精品 | 国产又粗又猛又爽又黄的视频先 | 国产亚洲精品精品精品 | 亚洲va欧美va国产va黑人 | 精品一区二区在线观看 | 久久综合狠狠综合久久狠狠色综合 | 国产午夜三级一区二区三桃花影视 | 伊人五月天婷婷 | 99热在 | 成人av电影网址 | 在线国产小视频 | 婷婷综合| 中文字幕字幕中文 | 美女网站视频久久 | 国产小视频在线观看 | 日韩免费三级 | 在线视频中文字幕一区 | 欧美a√大片 | 99电影| 久久观看最新视频 | 亚州欧美精品 | 久久久国产精品网站 | 美女黄濒 | 美女视频久久 | 精品久久网| 成人丁香花 | 国产伦精品一区二区三区在线 | 一区二区三区在线免费播放 | 婷婷亚洲综合 | 麻花豆传媒一二三产区 | 中文字幕av电影下载 | 9797在线看片亚洲精品 | 久久久久免费精品 | 五月视频 | 欧美日韩国产综合一区二区 | 日韩精品中文字幕有码 | 麻豆精品传媒视频 | 久久久一本精品99久久精品 | 91亚色视频在线观看 | 色偷偷av男人天堂 | 久久97久久97精品免视看 | 91亚洲精品乱码久久久久久蜜桃 | 五月天综合婷婷 | 丝袜少妇在线 | 天天草视频 | 亚洲砖区区免费 | 18久久久 | 亚洲精品国产品国语在线 | 99精品久久99久久久久 | 国产精品美女在线 | 草久在线观看视频 | 色瓜| a在线播放| 在线观看av网 | 国产一区二区成人 | 久草在线国产 | 一本色道久久综合亚洲二区三区 | 91麻豆传媒 | 射射射av| 伊人狠狠色丁香婷婷综合 | 国产在线日韩 | 精品9999| 在线观看视频免费大全 | 国产精品久久久影视 | 国产黄色精品网站 | 久草视频手机在线 | 国产成人久久av | 欧美黑吊大战白妞欧美 | 精壮的侍卫呻吟h | 西西www4444大胆视频 | 国产精品自在线拍国产 | 激情视频91| 九九热在线播放 | 丁香婷婷网 | 高清国产在线一区 | 国产91勾搭技师精品 | 成人超碰在线 | 成人在线播放视频 | 色av婷婷 | 久久国产精品成人免费浪潮 | 久久久久久久99精品免费观看 | 69av免费视频 | 国产精品色婷婷视频 | 青草视频在线看 | 亚洲午夜久久久久 | 欧洲高潮三级做爰 | 久久99精品久久久久婷婷 | 人人玩人人爽 | 丝袜av一区 | 99爱在线观看 | 亚洲免费av在线 | 欧美日韩精品区 | 国产 日韩 在线 亚洲 字幕 中文 | 日日操天天操狠狠操 | 久久经典国产 | 中文字幕二区三区 | 中文字幕在线播放av | 99精品久久久久久久 | 热久久视久久精品18亚洲精品 | 色中文字幕在线观看 | 超碰精品在线 | 国内精品毛片 | 国产一区二区影院 | 免费久久99精品国产 | av亚洲产国偷v产偷v自拍小说 | 久久任你操 | 天天天操操操 | 免费日韩视 | 97超碰在| 国产亚洲精品无 | 四虎在线观看 | 久久天天躁狠狠躁夜夜不卡公司 | 久久精品久久精品久久精品 | 久久免费片 | 久久免费影院 | 国产成人精品一区二区三区在线 | 国产精品久久久久久五月尺 | 最近更新的中文字幕 | 久久精选视频 | 中文字幕在线免费 | 黄色a级片在线观看 | 成片免费观看视频999 | www.av在线.com | 久久在线视频在线 | 亚洲精品在线观看中文字幕 | 91免费观看视频网站 | 久久九九久久九九 | 亚洲一级黄色大片 | www久久| 久久 一区| 中文字幕av全部资源www中文字幕在线观看 | 麻豆精品传媒视频 | 97视频在线观看成人 | 精品无人国产偷自产在线 | 国产精品久久久久久久久久三级 | 亚洲精品一区二区在线观看 | 中文字幕第一页在线播放 | 91探花国产综合在线精品 | 亚洲精品中文在线观看 | 婷婷六月在线 | 欧美日韩精品在线播放 | 精品国产免费一区二区三区五区 | 成人观看视频 | 国产成视频在线观看 | 超碰人人91 | 一区二区伦理电影 | 欧美黑人巨大xxxxx | 日韩电影精品一区 | 亚洲欧洲一区二区在线观看 | 久久免费电影 | 99爱在线 | 国产精品一区二区精品视频免费看 | 一区二区视频在线免费观看 | 成人午夜电影久久影院 | 国产精品18久久久久久vr | 色播99| 国产一级淫片在线观看 | 一级a性色生活片久久毛片波多野 | 992tv在线成人免费观看 | 久久精品99国产国产 | 粉嫩aⅴ一区二区三区 | 天天爱天天操天天射 | 色婷婷综合久久久中文字幕 | 欧美日韩高清一区二区 | 91精品天码美女少妇 | 超碰免费观看 | av网站免费在线 | 中文字幕黄色网址 | 亚洲国产97在线精品一区 | 亚洲电影av在线 | 日一日操一操 | 97精品国产91久久久久久久 | 手机在线免费av | 欧美色插 | 亚洲国产色一区 | 黄色电影小说 | 天天插天天 | 亚洲综合五月 | www.狠狠色.com| 国产福利一区二区三区视频 | 在线观看黄色免费视频 | 美女视频免费精品 | 成人精品久久久 | 人人要人人澡人人爽人人dvd | 91av视频网站| 日韩小视频 | 精品国产一区二区三区av性色 | 黄色软件在线观看 | 久久小视频| av免费在线看网站 | 国产成人精品福利 | 国产精品二区三区 | 天天操福利视频 | 免费看成人av | 欧美a级片网站 | 黄色中文字幕 | 国产精品一级视频 | 99re中文字幕 | 美女免费视频网站 | 中文字幕一区2区3区 | 国产精品久久电影网 | 精品91在线 | 天天摸日日操 | 在线а√天堂中文官网 | 日韩高清不卡在线 | 免费精品人在线二线三线 | 久久精选| 91在线视频免费观看 | 在线看v片成人 | 亚洲精品美女久久久 | 成人性生爱a∨ | 日韩av片在线 | 亚州精品天堂中文字幕 | 美女视频黄是免费的 | 国产一区在线观看免费 | 精品国产亚洲日本 | 91天天操 | 国产在线精品福利 | 日韩一区二区三区不卡 | 久久国产精品影片 | 久草免费资源 | 日韩在线观看视频一区二区三区 | av三级在线免费观看 | 精品高清美女精品国产区 | 色中色综合 | 亚洲成人高清在线 | 亚洲黄a | 在线天堂8√ | 日韩高清无线码2023 | 国产精品原创 | 国产精品久久影院 | 国产黄色理论片 | 9热精品| 色爱区综合激月婷婷 | 美女网站视频久久 | 99视频在线精品国自产拍免费观看 | 久久一视频 | 国产小视频免费在线网址 | 久久女同性恋中文字幕 | 久久久久国产a免费观看rela | 久久久精品国产一区二区三区 | 精品国产a | 国产成人精品一区二三区 | 日韩综合在线观看 | 亚洲精品网址在线观看 | 国产高清视频在线免费观看 | 亚洲日韩欧美视频 | 久久a级片 | 在线观看国产高清视频 | 久久久99国产精品免费 | 久久美女精品 | 久久艹免费 | 五月天综合网站 | 毛片1000部免费看 | 久久国内精品 | 亚洲精品视频一二三 | 中文字幕二区 | 久久国产电影院 | 久久久久久久电影 | 91在线免费看片 | 午夜av电影 | 欧美日韩精品在线观看 | 天堂网一区二区三区 | 四虎在线免费观看视频 | 激情五月伊人 | 六月丁香综合 | 精品久久久久久国产91 | 日韩中文字幕a | 精品久久视频 | 亚洲精品99久久久久中文字幕 | 日本xxxxav | 97看片网 | 久久嗨 | 国产成人中文字幕 | 国产高清亚洲 | 亚州成人av在线 | 中文字幕亚洲欧美日韩 | 日日色综合 | 毛片永久免费 | 91亚洲精品久久久久图片蜜桃 | 久久国产精品网站 | 超黄视频网站 | 日韩视频精品在线 | 96国产精品| 四虎成人免费影院 | 一区在线观看 | 在线观看精品视频 | 国精产品999国精产品岳 | 91亚色免费视频 | 98超碰在线观看 | 天天操 夜夜操 | 国产精品永久免费视频 | 99久久婷婷国产综合精品 | 亚欧洲精品视频在线观看 | 午夜精品一区二区三区在线观看 | 在线观看视频中文字幕 | 国产精品免费在线 | 九九爱免费视频在线观看 | 91欧美日韩国产 | 波多野结衣电影一区二区 | 丁香九月激情 | 国产高清在线a视频大全 | 久久黄色片 | 黄色免费av| 久产久精国产品 | 99精品久久久 | 玖玖视频网 | 99爱视频在线观看 | 色瓜| 69精品在线观看 | 亚洲成成品网站 | av成人在线播放 | 97国产在线视频 | 黄av资源| 99色 | 美女在线国产 | 亚洲精品午夜aaa久久久 | 成人国产一区 | 亚洲一区二区精品 | 精品二区久久 | 日韩免费av片 | 成人在线播放av | 免费色网 | 成人手机在线视频 | 97超碰在线视 | 国产999精品久久久久久麻豆 | 日韩中文在线观看 | h视频在线看| 免费在线观看av的网站 | 久久久久久高潮国产精品视 | 国产精品不卡一区 | 99精品在线直播 | 9在线观看免费高清完整版 玖玖爱免费视频 | 99欧美精品| 欧美色道 | 国产精品久久久久一区二区国产 | 久草视频播放 | 亚洲国内精品在线 | 99久久久久国产精品免费 | 中文字幕在线免费观看视频 | 顶级bbw搡bbbb搡bbbb | 久久精品一区二区三区中文字幕 | 综合国产在线 | 久久久国产精品电影 | 波多野结衣日韩 | 精品极品在线 | 97视频网站 | 亚洲精选在线观看 | 国产亚洲欧洲 | 久久久免费视频播放 | 9在线观看免费高清完整版在线观看明 | www.夜夜爽 | 久久久国产精品视频 | 欧美午夜久久 | 日本黄区免费视频观看 | 天天夜夜亚洲 | 日韩一区二区三 | 久久中文视频 | 91视频91色 | 午夜精品久久久久久久99 | 亚洲综合在线发布 | 成人性生交大片免费观看网站 | 91热精品 | 久草观看| 美女视频永久黄网站免费观看国产 | 日韩视频在线一区 | 69国产盗摄一区二区三区五区 | 日韩久久影院 | 免费在线观看黄 | 久久久久9999亚洲精品 | 天天色天天操天天爽 | 国产免费又黄又爽 | 丁香婷婷在线观看 | 一区二区 不卡 | 日韩av福利在线 | 国产成人精品久久二区二区 | 午夜婷婷综合 | 亚洲国产手机在线 | 日韩精品2区 | 色先锋资源网 | 免费观看xxxx9999片 | 天天天天色综合 | 欧美日韩另类视频 | 伊人久久一区 | 日韩高清www | 精品播放 | 亚州性色| 国产高清成人av | 99久久99热这里只有精品 | 黄色av影视| 亚洲高清视频在线播放 | 一区二区中文字幕在线播放 | 天天射综合网视频 | 色婷婷成人网 | 国产精品欧美久久久久无广告 | 五月天久久综合网 | 美女网站色在线观看 | 日本成人中文字幕在线观看 | 日韩欧美第二页 | 奇米网网址| 日日夜夜噜噜噜 | 精品免费视频123区 午夜久久成人 | 国产精品福利小视频 | 亚洲欧洲精品一区二区精品久久久 | 亚洲午夜精品久久久久久久久 | 国产日韩精品一区二区三区 | 人人爽久久涩噜噜噜网站 | 国产99在线播放 | 看国产黄色大片 | 国产精品99蜜臀久久不卡二区 | 91在线视频免费播放 | aaa毛片视频 | 在线之家免费在线观看电影 | 色鬼综合网 | 91热视频在线观看 | 激情视频在线高清看 | 欧美日韩高清国产 | 五月婷婷激情 | 亚洲天堂网视频 | 日韩美精品视频 | 国产精品粉嫩 | 日韩国产精品久久 | 91视频午夜| 久久精品视频在线免费观看 | 色综合久| 激情亚洲综合在线 | 国产免费作爱视频 | 日韩视频在线一区 | 手机看片 | 国产精品久久久久久久久久久免费看 | 在线视频中文字幕一区 | 国产91全国探花系列在线播放 | 黄色网址中文字幕 | 在线97| 九九视频网站 | 国产精品亚洲成人 | 美女网站在线播放 | 国产自产高清不卡 | 二区在线播放 | 九九热在线精品 | av中文国产 | 日日躁天天躁 | 国产黄色片久久 | 精品国产一区二区三区久久久 | 精品一二 | 午夜av网站 | 久久精品这里热有精品 | 五月婷婷激情五月 | 99电影456麻豆 |