日韩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缓存的全部內容,希望文章能夠幫你解決所遇到的問題。

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

久草在线最新免费 | 99自拍视频在线观看 | 亚洲第一av在线 | 在线观看视频国产一区 | www178ccom视频在线 | 99精品欧美一区二区三区黑人哦 | 毛片视频电影 | 在线观看久久久久久 | 色香蕉在线视频 | 久久久久激情视频 | 啪啪午夜免费 | 一区二区视频在线观看免费 | 人人舔人人爽 | 97涩涩视频 | 欧美做受高潮 | 日韩欧美综合视频 | 成人在线中文字幕 | 2020天天干夜夜爽 | 99色视频在线 | 精品久久一 | 亚洲aⅴ乱码精品成人区 | 欧美日韩在线看 | 久久久受www免费人成 | 天天操天天干天天摸 | 天天色天天射天天操 | 国产97在线看 | 国产精品成人免费精品自在线观看 | 免费观看一区二区三区视频 | 亚洲高清av在线 | 成人在线免费观看视视频 | 久久蜜臀av | 亚洲精品五月 | 精品免费观看 | 91av手机在线 | 国产剧情一区二区 | 在线观看一区 | 天天做综合网 | 国产不卡视频在线 | 99精品国产福利在线观看免费 | 日韩欧美高清在线观看 | 久色婷婷 | 96国产精品视频 | 免费在线黄色av | 国产精品一区二区在线观看免费 | 国产一区二区三区高清播放 | 一区二区毛片 | 91色综合| 97干com | 亚洲综合视频在线 | 成人在线黄色电影 | 韩国av在线 | 国产成人亚洲精品自产在线 | 国产精品大片在线观看 | 国产一级二级在线播放 | 国产又黄又爽无遮挡 | 久草干| 久久99久久精品 | 青春草免费视频 | 最近日本mv字幕免费观看 | 欧美日韩不卡在线视频 | 天天操天天操天天操天天操天天操 | 性色大片在线观看 | 久草在线手机观看 | 国产精品成人一区 | 精产嫩模国品一二三区 | 色婷婷激情电影 | 欧美另类一二三四区 | av电影免费在线看 | 人人狠 | 国内综合精品午夜久久资源 | 成人黄色在线 | 日躁夜躁狠狠躁2001 | 欧美地下肉体性派对 | 国产九九九精品视频 | 成人av av在线 | 亚洲精品国产免费 | 日韩欧美一区二区三区视频 | 二区视频在线 | 99成人在线视频 | 最新av网址在线 | 青青啪 | 免费中文字幕在线观看 | 久久久久日本精品一区二区三区 | 日韩视频一区二区三区在线播放免费观看 | 久久婷婷色综合 | 成人小视频在线 | 日韩免费观看视频 | 日韩三区在线 | 午夜影视一区 | 久草在线在线精品观看 | 欧美日韩国产一二三区 | 国产日韩视频在线播放 | av电影在线免费观看 | 狠狠狠狠狠狠狠 | 日韩在线视频播放 | 亚洲最新av | 91av在线播放视频 | 黄色片亚洲 | 美女视频免费一区二区 | 天天干中文字幕 | 一级a性色生活片久久毛片波多野 | 91插插影库| 免费在线观看成年人视频 | 天天操天天干天天插 | 久久精品国产成人精品 | 97色视频在线 | 国产免费亚洲高清 | 免费网站黄色 | 欧美精品中文在线免费观看 | 亚洲综合国产精品 | 波多野结衣资源 | 欧美一级看片 | 成人四虎影院 | 久久成人午夜 | 97电影院在线观看 | 特级a老妇做爰全过程 | 国产人在线成免费视频 | 精品亚洲免费 | 在线观看一区二区精品 | 亚洲va欧洲va国产va不卡 | 三级黄色三级 | 久久久精品99 | 波多野结衣在线中文字幕 | 欧美成人tv | 国产精品美女视频网站 | 在线视频欧美亚洲 | 国产精品九九视频 | 97精品在线 | 天天操天天干天天插 | 久久精品国产一区二区 | 国内精品美女在线观看 | 日韩伦理一区二区三区av在线 | 一级黄色片在线免费观看 | 亚洲国产理论片 | 五月视频 | 久久精品视频播放 | 亚洲视频在线免费看 | 日韩中文字幕在线看 | 亚洲免费国产视频 | 亚洲精品乱码久久久一二三 | 综合色综合 | 日韩精品字幕 | 成人在线观看资源 | 久草久热 | 国产在线观看黄 | 国产在线高清 | 一区二区三区手机在线观看 | 天天骚夜夜操 | 欧美日韩国产在线观看 | 91桃色在线免费观看 | 久久在线视频精品 | 中文字幕综合在线 | 日韩一二三区不卡 | 超碰人人av | 国产一区二区三精品久久久无广告 | www.久久com| 久草影视在线 | 国内精品中文字幕 | 国产婷婷精品av在线 | 日韩在线观看高清 | 亚洲欧洲一区二区在线观看 | 成人在线观看免费视频 | 亚洲精品视频 | 五月天亚洲婷婷 | 国产福利精品视频 | 夜添久久精品亚洲国产精品 | 看片在线亚洲 | 欧美一级专区免费大片 | 成人福利在线观看 | 国产精品久久久久久久久久久久久久 | 91在线播| 中文字幕色在线视频 | 成人久久久久久久久久 | 六月丁香色婷婷 | 久久精品99国产精品日本 | 午夜色影院 | 日本黄色免费网站 | 成人免费观看电影 | 国产一区二区在线免费播放 | japanesexxxhd奶水 91在线精品一区二区 | 国产精品大片 | 国产黄大片 | 日韩免费一区二区三区 | 亚洲欧美国产精品18p | 天天操天天干天天爱 | 国产精品av电影 | 久久精品视频国产 | 亚洲 欧美 日韩 综合 | 在线播放亚洲 | 国产精品伦一区二区三区视频 | 国产日韩在线看 | 91在线入口| 国产成人av片 | 综合成人在线 | 久免费视频 | bbb搡bbb爽爽爽 | 日韩性片 | 久久精品123 | 国产尤物视频在线 | 亚洲午夜精品福利 | 亚洲福利精品 | 国产精品一区二区三区观看 | 亚洲婷婷网 | 高清免费在线视频 | 色一级片 | 在线中文字幕网站 | 亚洲综合网站在线观看 | 欧美黑人巨大xxxxx | 中文字幕黄网 | 久久伊人精品一区二区三区 | 在线观看视频一区二区 | 亚洲精品网页 | a在线观看免费视频 | 92精品国产成人观看免费 | 色综合天天狠天天透天天伊人 | 99精品视频在线观看视频 | 亚洲黄色在线 | 亚洲狠狠婷婷 | 日韩中文字幕免费视频 | 亚洲精品国产日韩 | 在线视频中文字幕一区 | 午夜黄色一级片 | 国产一区免费观看 | 久久嗨| 久久国产欧美日韩精品 | ww亚洲ww亚在线观看 | 国产手机av | 国产亚洲精品久久网站 | 免费av 在线| av日韩精品 | 久久女同性恋中文字幕 | 久久免费视频一区 | 在线国产99 | 亚洲视频免费在线观看 | 日韩成人免费观看 | 国产免费又粗又猛又爽 | 99热精品在线 | 在线观看精品黄av片免费 | 亚洲国产日韩av | 精品久操| 91色综合| 九九亚洲精品 | 亚洲综合欧美日韩狠狠色 | 欧美成人xxx | av综合 日韩| 精品国产亚洲一区二区麻豆 | 超碰com| 黄色av网站在线免费观看 | 中文字幕在线观看视频一区 | 九热在线 | 日韩爱爱片 | 狠狠色噜噜狠狠狠合久 | 国产精品入口麻豆 | 久久久精品免费观看 | 国产精品福利在线观看 | 色多多污污在线观看 | 色99在线 | 91视频 - x99av | 粉嫩一二三区 | jizz18欧美18| 久久精品成人 | 久久超碰在线 | 国产999在线观看 | 国内久久看| 国产精品青草综合久久久久99 | 亚洲视频高清 | 天天做日日爱夜夜爽 | 中文字幕在线免费观看视频 | 最新av电影网址 | 精品亚洲va在线va天堂资源站 | av在线电影播放 | 国产中的精品av小宝探花 | 色在线观看网站 | 黄色网址a | 精品国产一区二区三区日日嗨 | 国产美女网站在线观看 | 国产精品亚洲成人 | 91 在线视频播放 | 久久婷婷丁香 | 亚洲香蕉视频 | 国内成人精品视频 | 天天插日日射 | 黄色免费视频在线观看 | 午夜10000 | 日韩精品中文字幕在线 | 亚洲精品久久久久久久不卡四虎 | 国产又粗又猛又色又黄视频 | 黄色大全视频 | 成片视频在线观看 | 日韩av网站在线播放 | 免费日韩 精品中文字幕视频在线 | 成人 亚洲 欧美 | 色99中文字幕 | 精品视频区 | 天天玩天天操天天射 | 日韩视频在线观看视频 | 久久久久黄色 | 久久看毛片 | 国产日韩精品一区二区三区 | 久久久久黄 | 久久激情婷婷 | 免费精品在线 | 免费a视频 | 亚洲综合少妇 | 另类五月激情 | 日韩激情综合 | 国产91精品看黄网站在线观看动漫 | 欧美久久久久久久久 | 亚洲精品456在线播放 | 国产精品成 | 激情喷水 | 色综合五月 | 精品高清视频 | 丁香视频全集免费观看 | 日韩系列在线观看 | 又大又硬又黄又爽视频在线观看 | 人人超碰在线 | 黄污网站在线观看 | 在线蜜桃视频 | 国产精品久久久久婷婷二区次 | 午夜视频在线观看一区二区三区 | 色吊丝在线永久观看最新版本 | 亚洲免费在线播放视频 | 四虎欧美 | 欧美国产精品一区二区 | 91麻豆免费视频 | 日韩欧美一区二区三区黑寡妇 | 亚洲精品国产成人av在线 | 国产91学生粉嫩喷水 | 久久亚洲福利视频 | 五月婷婷香蕉 | 九九九在线 | 欧美一级片免费在线观看 | 日韩中文字幕一区 | 国产午夜精品理论片在线 | 人人干狠狠操 | 国产婷婷vvvv激情久 | 网站在线观看你们懂的 | 在线观看91网站 | 免费观看午夜视频 | 成人污视频在线观看 | 亚洲一区二区黄色 | 欧美黄色特级片 | 久久视屏网 | www黄com | 男女激情麻豆 | 国产精品第二页 | 国产亚洲成av人片在线观看桃 | 中文在线8资源库 | 亚洲 中文 在线 精品 | 日韩精品一区二区三区电影 | 欧美日韩国产免费视频 | 国产色在线,com | 成人av在线影视 | 爱爱一区| 在线视频精品播放 | av网站播放| 探花视频免费观看 | 狠狠88综合久久久久综合网 | 天天舔天天搞 | 欧美少妇xx| 亚洲日本欧美 | 欧美一区二区三区四区夜夜大片 | 久久精品一区二区三区四区 | 黄色成人影视 | 精品亚洲va在线va天堂资源站 | 在线免费观看视频一区二区三区 | 69国产精品成人在线播放 | 91视频在线免费下载 | 色婷婷丁香 | 国产精品成人av在线 | 91大神dom调教在线观看 | 亚洲好视频 | 激情五月六月婷婷 | 国产真实精品久久二三区 | 久久久人 | 色婷婷久久久综合中文字幕 | 国产精品免费一区二区三区在线观看 | 中文字幕xxxx| 日韩视频精品在线 | 久艹视频在线免费观看 | 91精品久久久久久综合乱菊 | 久久久久这里只有精品 | 97超碰在线久草超碰在线观看 | 九九热免费视频在线观看 | 四季av综合网站 | 奇米影视四色8888 | 日韩高清www | 91.精品高清在线观看 | 中文字幕第一页在线视频 | 日韩不卡高清视频 | 国产一区二区不卡视频 | 日韩精品视频免费专区在线播放 | 久草免费电影 | av动态图片 | 麻豆系列在线观看 | 九色视频自拍 | 涩涩在线 | 亚洲视频大全 | 天天操夜夜做 | 日韩精品久久久久久久电影99爱 | 欧美性网站 | 国产专区在线播放 | 国产最顶级的黄色片在线免费观看 | 久久综合久色欧美综合狠狠 | av三级av | 特级黄色一级 | 日批视频 | 在线观看黄色国产 | 六月婷婷色 | 人人爱人人舔 | 亚洲一区网 | 久久精品亚洲一区二区三区观看模式 | 国产1区2区3区在线 亚洲自拍偷拍色图 | 在线免费观看视频一区 | 国内精品久久久久久久影视简单 | 国产免费精彩视频 | 成人一级黄色片 | 日韩精品在线观看视频 | 精品国产免费观看 | 一区二区三区四区免费视频 | 亚洲另类人人澡 | 亚洲国产欧洲综合997久久, | 欧美日韩在线播放 | 精品久久毛片 | 成年人网站免费观看 | 国产亚州精品视频 | avav99| 日韩区欧美久久久无人区 | 日韩电影精品 | www日韩欧美 | 中文字幕亚洲欧美 | 国产麻豆视频免费观看 | 国产亚洲永久域名 | 亚洲精品在线视频网站 | 婷婷久久婷婷 | 中文字幕在线影院 | 一区二区精品视频 | 日韩成人精品一区二区三区 | 丁香av | 在线免费黄色av | 国产亚洲在| 亚洲一区网 | 天天操夜夜操天天射 | 五月激情在线 | 成人久久久电影 | 五月在线视频 | 三级动图 | 国产精品ⅴa有声小说 | 国产成人精品一区二区三区福利 | 欧美天堂视频在线 | 亚洲视频在线免费看 | 99精品在线视频播放 | 国产99一区二区 | 国产又黄又猛又粗 | 日本久久成人中文字幕电影 | 色综合久久99 | 91亚洲成人 | 欧美黑人性猛交 | 精品视频免费久久久看 | 国产区精品在线 | 天天色天天干天天色 | 天天天插 | 国产色综合天天综合网 | 免费福利小视频 | 西西44人体做爰大胆视频 | 国产日韩视频在线 | 国产一区福利 | 黄色软件网站在线观看 | 色www永久免费 | 欧美精品乱码久久久久久按摩 | 激情综合亚洲精品 | 国内精品久久久久久久影视麻豆 | 亚洲作爱 | 亚洲一区二区三区四区精品 | 西西www4444大胆在线 | 免费观看xxxx9999片 | 欧美久久久影院 | 丁香婷婷在线观看 | 五月黄色 | 狠狠精品 | 高清久久久久久 | www.xxxx变态.com| 一区二区三区免费看 | 日韩小视频网站 | 成人免费xyz网站 | 伊人久久一区 | 97热久久免费频精品99 | 欧美大片在线观看一区 | 在线观看免费一级片 | 日韩黄色一级电影 | 日韩三级久久 | 欧美精品一区二区在线播放 | 99久久婷婷国产一区二区三区 | 日本成址在线观看 | 国产午夜精品理论片在线 | 一级α片免费看 | 日日干干| 婷婷丁香社区 | www.国产高清| 免费av片在线| 久久免费看av | 久99久久| av电影在线免费 | 欧美a性| 国产精品九九九九九九 | 午夜精品视频一区二区三区在线看 | 久久与婷婷 | 日韩一区正在播放 | 免费高清无人区完整版 | 久久这里有精品 | 三级小视频在线观看 | 国产精品久久久久av | 国产亚洲精品久久久久久无几年桃 | 国产成人777777 | 日韩欧美综合精品 | av在线色 | 国产成人精品一区二区三区福利 | 四虎在线观看网址 | 国内精自线一二区永久 | 美女视频又黄又免费 | 青青河边草免费视频 | 蜜臀精品久久久久久蜜臀 | 亚洲日韩欧美一区二区在线 | 丰满少妇高潮在线观看 | 黄色毛片观看 | 久草视频中文在线 | 精品国产成人av在线免 | 91视频 - x99av| 丁香网婷婷 | 在线观看国产麻豆 | 深夜福利视频在线观看 | 中文字幕在线网址 | 激情五月婷婷综合 | 97人人超碰在线 | 玖玖玖影院 | 国产在线污 | 欧美国产不卡 | 婷婷丁香在线观看 | 中文字幕亚洲欧美日韩 | 黄色录像av | 天天爽夜夜爽人人爽曰av | 久综合网| 五月天久久久久 | 日韩va欧美va亚洲va久久 | 三级黄色片在线观看 | www.888.av| 亚洲天堂网站 | 丁香花五月 | 色婷婷啪啪免费在线电影观看 | 国产欧美日韩精品一区二区免费 | 91精品国自产拍天天拍 | 97精品国自产拍在线观看 | 久久99国产一区二区三区 | 久久久久99999 | 伊人天天干| 久草免费在线观看视频 | 亚洲第一色 | 午夜精品一区二区三区免费视频 | 一本一本久久a久久精品综合妖精 | 91视频观看免费 | 中文字幕亚洲字幕 | 99国产精品免费网站 | 国产免费观看高清完整版 | 五月婷婷另类国产 | 国产一区二三区好的 | 国产第一页精品 | 91久久久久久国产精品 | 97夜夜澡人人双人人人喊 | 国产手机视频在线播放 | 一本一本久久a久久精品综合妖精 | 免费91在线 | 国产精品18久久久久久久久 | 久久国产精品第一页 | 成人在线视频论坛 | 99久久精品电影 | 国产精品久久一区二区三区, | 丁香资源影视免费观看 | 久久国产精彩视频 | 91麻豆精品久久久久久 | 成人免费观看完整版电影 | 欧洲精品视频一区二区 | 欧美-第1页-屁屁影院 | 9在线观看免费高清完整 | 狠狠的日| 国产最新在线观看 | 久久香蕉一区 | 国产亚洲片| 91免费版在线 | 日日夜夜天天人人 | 国产xvideos免费视频播放 | 亚洲黄色成人网 | 久久久久伊人 | 天天色天天上天天操 | av免费在线网 | 在线视频精品播放 | 久精品视频在线观看 | 一区二区三区在线免费观看 | 国产又粗又猛又色又黄视频 | 亚洲综合成人av | 国产一级视频在线免费观看 | 久久99精品国产麻豆宅宅 | 国产一区二区三区免费视频 | 欧美 日韩精品 | 天天干天天操天天拍 | 日韩精品免费在线播放 | 久久久国产一区二区三区 | 国产精品一区二区av麻豆 | 激情偷乱人伦小说视频在线观看 | 狠狠干电影 | 久久久久在线观看 | 综合激情网| 九七视频在线观看 | 成人宗合网 | 91大神视频网站 | 国产精品久久久久久av | 久久婷婷色综合 | 国产色中涩 | 国内精品久久久久 | 色视频在线 | 天堂av在线免费观看 | 欧美日韩国产二区 | 九九九电影免费看 | 夜夜操综合网 | 天天综合天天做天天综合 | 狠狠干婷婷 | 四虎最新域名 | 中文一区二区三区在线观看 | 9在线观看免费 | 国产精品成人av久久 | 亚洲午夜在线视频 | 在线成人免费电影 | 国产成人精品一区二区在线 | 香蕉视频在线播放 | 国产高清视频在线播放一区 | 色吧av色av | av黄色一级片 | 国产午夜精品一区二区三区四区 | 经典三级一区 | 丁香婷婷在线观看 | wwxxxx日本| 96久久久| 亚洲视频大全 | 国产中文在线视频 | 成人av直播 | 伊人资源视频在线 | 一区二区三区免费在线播放 | 久久一区二区免费视频 | 国产不卡av在线 | 日本在线观看一区二区 | 人人干网站 | 国产网站在线免费观看 | 久久久久久久久爱 | 久久久国产一区 | 欧美日韩免费观看一区=区三区 | 久久久高清视频 | 91精品在线看 | 五月天综合激情 | 精品欧美一区二区三区久久久 | 久久久免费看片 | 九九九九精品九九九九 | 国产 中文 日韩 欧美 | 欧美最猛性xxx | 国产色视频一区二区三区qq号 | 精品中文字幕在线观看 | av片子在线观看 | 97视频在线观看播放 | 麻豆视频免费入口 | 亚洲日本一区二区在线 | 999国产精品视频 | 日韩av线观看 | 日韩深夜在线观看 | 色先锋av资源中文字幕 | 99热九九这里只有精品10 | 精品99999| 日韩在线播放欧美字幕 | 97操操| 高清在线一区 | 日韩av黄 | 可以免费看av| 精品亚洲一区二区三区 | 又黄又网站 | 日日草天天干 | 亚洲天堂网在线观看视频 | 福利视频精品 | 日韩av看片 | www.天天操 | 国产精品av免费在线观看 | 亚洲黄色网络 | 国产无吗一区二区三区在线欢 | 久久免费视频网站 | 久久九九国产精品 | 三级视频日韩 | 最新91在线视频 | 久草在线资源观看 | 日韩免费高清在线观看 | 欧美日韩在线观看视频 | 黄色在线观看免费 | av福利网址导航大全 | 黄色在线免费观看网站 | 亚洲精品av中文字幕在线在线 | 狠狠色狠狠色终合网 | 日日噜噜噜噜夜夜爽亚洲精品 | 免费亚洲黄色 | 成人一级影视 | 日韩免费观看高清 | 一级黄色大片在线观看 | 天天色综合1 | 日躁夜躁狠狠躁2001 | 日韩精品一区二区三区水蜜桃 | 免费网站色 | 免费色av | 色综合久久66 | 在线观看一区二区精品 | 黄色天堂在线观看 | 夜夜躁日日躁狠狠久久88av | 91九色国产 | 天天天天天天干 | 91桃色免费视频 | 亚洲爱爱视频 | 成人一级免费电影 | 99久高清在线观看视频99精品热在线观看视频 | 夜夜夜夜爽 | 久久精品国产免费看久久精品 | 亚洲更新最快 | 99日韩精品 | 欧美久草视频 | 日韩激情片在线观看 | 国产中文在线字幕 | 国产精品久久久亚洲 | 久久综合色天天久久综合图片 | 91在线免费看片 | 午夜精品一区二区三区视频免费看 | 色播五月激情五月 | 久久免费视屏 | 丁香视频全集免费观看 | 久久视频 | 国产精品24小时在线观看 | 亚洲国产精品视频 | 亚洲精品免费在线视频 | 一区二区精品在线观看 | 黄色大片视频网站 | 91欧美视频网站 | 中文字幕高清在线 | 欧美日韩一区二区免费在线观看 | 99视频在线观看一区三区 | 免费精品国产va自在自线 | 中文免费 | 国产精品初高中精品久久 | 久久精品免费 | 久久久久观看 | a视频免费在线观看 | 欧美日韩xx| 日韩一区二区久久 | 久草在线视频首页 | 色橹橹欧美在线观看视频高清 | 精品在线观看一区二区 | 免费一级特黄录像 | 婷婷去俺也去六月色 | 欧美精品久久久久久久久久丰满 | 成年人网站免费观看 | 绯色av一区| 丁香婷婷网 | 久艹视频免费观看 | 日韩在线中文字幕视频 | 日韩羞羞 | 亚洲国产免费看 | 欧美日韩伦理在线 | 激情婷婷综合网 | 国产涩涩在线观看 | 狠狠操精品 | 国产短视频在线播放 | 九九免费观看视频 | 国产欧美精品一区二区三区 | 成人cosplay福利网站 | 天天干,天天射,天天操,天天摸 | 欧美国产日韩一区二区三区 | 黄色软件视频大全免费下载 | 久久精品国产一区二区电影 | 香蕉视频网址 | 精品视频国产一区 | 欧美性大胆 | 玖玖在线视频观看 | 综合久久精品 | 性色va | 视频一区二区三区视频 | 亚洲在线资源 | 亚洲三级精品 | 天天插天天色 | 国产男男gay做爰 | 国产精品日韩欧美 | 97超碰成人| 麻豆国产视频下载 | 久久午夜视频 | 日韩毛片在线免费观看 | 免费h视频 | 国产精品无av码在线观看 | 最新中文字幕在线资源 | 色av色av色av | 国产综合福利在线 | 国产欧美中文字幕 | 亚洲在线成人精品 | 成年人免费电影在线观看 | www.玖玖玖 | 在线中文字幕视频 | 欧美网站黄色 | 午夜久久久久久久久久影院 | 久久在线免费观看视频 | 亚州中文av| 又黄又爽又刺激的视频 | 人人玩人人添人人澡超碰 | 黄色资源在线观看 | 亚洲日本在线一区 | 免费在线日韩 | 亚洲成人精品 | 91成人久久| 全黄色一级片 | 日韩美一区二区三区 | 亚洲精品视频久久 | 免费观看mv大片高清 | 手机av电影在线 | 在线免费中文字幕 | 六月丁香激情综合 | 免费观看一区二区 | 91麻豆免费版 | 亚洲精品456在线播放第一页 | 日本久久成人中文字幕电影 | 992tv在线观看网站 | 激情丁香在线 | 91免费版成人 | 国产在线国偷精品产拍免费yy | 国产精品久久精品国产 | ww视频在线观看 | 日本精品视频在线 | 国产一区在线免费观看 | 成人免费视频播放 | 婷婷av在线 | 婷婷福利影院 | 97成人精品视频在线观看 | 亚洲综合色播 | 国产日韩欧美视频 | 久久兔费看a级 | 一区在线电影 | 国产视频2 | 国产免费二区 | 精品美女久久久久久免费 | 亚洲精品在线观看的 | 97碰碰精品嫩模在线播放 | 色综久久 | 国产成人av免费在线观看 | 亚洲在线看 | 亚洲在线网址 | 欧美日韩天堂 | 欧美另类高潮 | 日韩午夜精品 | 天天天在线综合网 | 韩国三级av在线 | 超碰人人超碰 | 久久国产片 | 69亚洲视频 | 亚洲综合色激情五月 | 久久综合九色综合97_ 久久久 | 欧美精彩视频 | 日韩欧美在线一区二区 | 黄色网址a| 久久久久久毛片精品免费不卡 | 成av在线| 808电影 | 韩国在线一区二区 | 九九热只有这里有精品 | 在线天堂亚洲 | 美女福利视频网 | 天天干天天拍天天操 | 成人久久18免费 | 国产精品一区二区在线观看 | 最新av网站在线观看 | 蜜臀精品久久久久久蜜臀 | 国产免费一区二区三区最新 | 狠狠干夜夜 | 高清av免费观看 | 91自拍成人| 国产高清99 | 美女网站视频免费黄 | 欧美日韩免费在线观看视频 | 国产专区在线视频 | 国产人成看黄久久久久久久久 | 国产精品毛片一区二区三区 | 人人dvd| 国内精品久久久久影院一蜜桃 | 精品一区二区三区香蕉蜜桃 | 97在线影院 | 激情婷婷欧美 | 97超碰中文字幕 | 一区在线观看 | 中文字幕4 | 中文字幕高清免费日韩视频在线 | 午夜精品视频在线 | 日韩在线观看一区二区 | 日韩欧美一区二区三区在线观看 | 国产精品五月天 | 欧美一级特黄高清视频 | 国产精品不卡在线播放 | 欧美激情va永久在线播放 | 99久久精品久久久久久清纯 | 黄色免费网站下载 | 92av视频 | 久久在线看 | 毛片在线网 | 91看片网址 | 亚洲黄色影院 | 亚洲一区二区三区四区在线视频 | 999电影免费在线观看 | 一区二区 久久 | 婷婷激情5月天 | 美女网站色免费 | 久久av不卡 | 午夜日b视频 | 黄色国产高清 | 97超级碰 | 亚洲www天堂com | 久草精品网 | 色综合久久久久 | 国产精品成久久久久三级 | 日韩av一区二区在线播放 | 亚洲国产99 | 日本久久久久久科技有限公司 | 91九色蝌蚪视频在线 | 毛片视频网址 | 欧美精品xxx | 日本精品久久久久中文字幕 | 国产午夜小视频 | av网站免费线看精品 | 亚洲成人黄色在线观看 | 婷婷在线看 | 亚洲jizzjizz日本少妇 | 中文资源在线观看 | www.久久免费视频 | 最近中文国产在线视频 | 日韩三区在线观看 | 国产97色 | 狠狠色丁香婷婷综合最新地址 | 久久精品9 | www色,com| 亚洲在线激情 | 国产精品99蜜臀久久不卡二区 | 青草视频在线播放 | 中文字幕有码在线观看 | 中文字幕一区二区三区在线播放 | 天堂中文在线视频 | 国产精品99爱 | 九九九九精品九九九九 | 色婷婷综合成人av | 亚洲日本色 | 黄色软件视频网站 | 亚州精品在线视频 | 国产成人在线免费观看 | 六月婷婷久香在线视频 | 色播五月激情综合网 | 欧美性生活免费看 | 久久一视频 | 国产亚洲精品美女 | 国产丝袜在线 | 国产精品久久久久久久av大片 | 十八岁免进欧美 | www国产亚洲精品 | 日韩午夜视频在线观看 | 国产黑丝一区二区三区 | 九九热在线观看视频 | 午夜免费电影院 | av超碰在线 | 一区二区免费不卡在线 | 色综合亚洲精品激情狠狠 | 麻豆果冻剧传媒在线播放 | 中文字幕人成乱码在线观看 | 91色蜜桃 | 久久亚洲在线 | 中文字幕在线免费播放 | 日本性高潮视频 | 黄色1级毛片| 色在线网| 国产 精品 资源 | 一级大片在线观看 | 麻豆视频国产 | 久久精品福利 | 久久综合中文色婷婷 | 一区二区三区在线观看免费 | 成人在线你懂得 | 成人视屏免费看 | 成人免费在线观看av | 麻花豆传媒mv在线观看 | 在线a亚洲视频播放在线观看 | 成人在线免费av | 国产精品毛片一区二区三区 | 国产永久免费高清在线观看视频 | 色欧美视频 | 国产成人三级在线播放 | 韩国一区二区av | 91欧美在线|