You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by jo...@apache.org on 2021/08/02 15:32:19 UTC
[superset] branch john-bodley--datetime-timedelta created (now
1850e8a)
This is an automated email from the ASF dual-hosted git repository.
johnbodley pushed a change to branch john-bodley--datetime-timedelta
in repository https://gitbox.apache.org/repos/asf/superset.git.
at 1850e8a chore: use datetime.timedelta for defining durations
This branch includes the following new commits:
new 1850e8a chore: use datetime.timedelta for defining durations
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[superset] 01/01: chore: use datetime.timedelta for defining
durations
Posted by jo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
johnbodley pushed a commit to branch john-bodley--datetime-timedelta
in repository https://gitbox.apache.org/repos/asf/superset.git
commit 1850e8af523d38c6aeb38c6ae391b53b25bee134
Author: John Bodley <45...@users.noreply.github.com>
AuthorDate: Tue Aug 3 03:31:16 2021 +1200
chore: use datetime.timedelta for defining durations
---
superset/config.py | 59 ++++++++++++++++++++++++++----------------------------
1 file changed, 28 insertions(+), 31 deletions(-)
diff --git a/superset/config.py b/superset/config.py
index e254ff1..b6943c9 100644
--- a/superset/config.py
+++ b/superset/config.py
@@ -28,7 +28,7 @@ import os
import re
import sys
from collections import OrderedDict
-from datetime import date
+from datetime import date, timedelta
from typing import Any, Callable, Dict, List, Optional, Type, TYPE_CHECKING, Union
from cachelib.base import BaseCache
@@ -139,7 +139,7 @@ SUPERSET_WEBSERVER_PORT = 8088
# [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
+SUPERSET_WEBSERVER_TIMEOUT = int(timedelta(minutes=1).total_seconds())
# this 2 settings are used by dashboard period force refresh feature
# When user choose auto force refresh frequency
@@ -489,13 +489,12 @@ THUMBNAIL_CACHE_CONFIG: CacheConfig = {
"CACHE_NO_NULL_WARNING": True,
}
-# Time in seconds before selenium
-# times out after trying to locate an element on the page and wait
+# Time before selenium times out after trying to locate an element on the page and wait
# for that element to load for a screenshot.
-SCREENSHOT_LOCATE_WAIT = 10
-# Time in seconds before selenium
-# times out after waiting for all DOM class elements named "loading" are gone.
-SCREENSHOT_LOAD_WAIT = 60
+SCREENSHOT_LOCATE_WAIT = int(timedelta(seconds=10).total_seconds())
+# Time before selenium times out after waiting for all DOM class elements named
+# "loading" are gone.
+SCREENSHOT_LOAD_WAIT = int(timedelta(minutes=1).total_seconds())
# Selenium destroy retries
SCREENSHOT_SELENIUM_RETRIES = 5
# Give selenium an headstart, in seconds
@@ -518,9 +517,9 @@ IMG_UPLOAD_URL = "/static/uploads/"
# Setup image size default is (300, 200, True)
# IMG_SIZE = (300, 200, True)
-# Default cache timeout (in seconds), applies to all cache backends unless
-# specifically overridden in each cache config.
-CACHE_DEFAULT_TIMEOUT = 60 * 60 * 24 # 1 day
+# Default cache timeout, applies to all cache backends unless specifically overridden in
+# each cache config.
+CACHE_DEFAULT_TIMEOUT = int(timedelta(days=1).total_seconds())
# Default cache for Superset objects
CACHE_CONFIG: CacheConfig = {"CACHE_TYPE": "null"}
@@ -682,8 +681,8 @@ class CeleryConfig: # pylint: disable=too-few-public-methods
"sql_lab.get_sql_results": {"rate_limit": "100/s"},
"email_reports.send": {
"rate_limit": "1/s",
- "time_limit": 120,
- "soft_time_limit": 150,
+ "time_limit": int(timedelta(seconds=120).total_seconds()),
+ "soft_time_limit": int(timedelta(seconds=150).total_seconds()),
"ignore_result": True,
},
}
@@ -723,22 +722,21 @@ HTTP_HEADERS: Dict[str, Any] = {}
DEFAULT_DB_ID = None
# Timeout duration for SQL Lab synchronous queries
-SQLLAB_TIMEOUT = 30
+SQLLAB_TIMEOUT = int(timedelta(seconds=30).total_seconds())
# Timeout duration for SQL Lab query validation
-SQLLAB_VALIDATION_TIMEOUT = 10
+SQLLAB_VALIDATION_TIMEOUT = int(timedelta(seconds=10).total_seconds())
# 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
+# The MAX duration a query can run for before being killed by celery.
+SQLLAB_ASYNC_TIME_LIMIT_SEC = int(timedelta(hours=6).total_seconds())
# 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
+SQLLAB_QUERY_COST_ESTIMATE_TIMEOUT = int(timedelta(seconds=10).total_seconds())
# The feature is off by default, and currently only supported in Presto and Postgres.
# It also need to be enabled on a per-database basis, by adding the key/value pair
# `cost_estimate_enabled: true` to the database `extra` attribute.
@@ -906,7 +904,7 @@ FAB_ADD_SECURITY_PERMISSION_VIEWS_VIEW = False
TROUBLESHOOTING_LINK = ""
# CSRF token timeout, set to None for a token that never expires
-WTF_CSRF_TIME_LIMIT = 60 * 60 * 24 * 7
+WTF_CSRF_TIME_LIMIT = int(timedelta(weeks=1).total_seconds())
# 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.
@@ -922,11 +920,11 @@ BLUEPRINTS: List[Blueprint] = []
TRACKING_URL_TRANSFORMER = lambda x: x
# Interval between consecutive polls when using Hive Engine
-HIVE_POLL_INTERVAL = 5
+HIVE_POLL_INTERVAL = int(timedelta(seconds=5).total_seconds())
# Interval between consecutive polls when using Presto Engine
# See here: https://github.com/dropbox/PyHive/blob/8eb0aeab8ca300f3024655419b93dad926c1a351/pyhive/presto.py#L93 # pylint: disable=line-too-long
-PRESTO_POLL_INTERVAL = 1
+PRESTO_POLL_INTERVAL = int(timedelta(seconds=1).total_seconds())
# Allow for javascript controls components
# this enables programmers to customize certain charts (like the
@@ -984,10 +982,10 @@ ALERT_REPORTS_CRON_WINDOW_SIZE = 59
ALERT_REPORTS_WORKING_TIME_OUT_KILL = True
# if ALERT_REPORTS_WORKING_TIME_OUT_KILL is True, set a celery hard timeout
# Equal to working timeout + ALERT_REPORTS_WORKING_TIME_OUT_LAG
-ALERT_REPORTS_WORKING_TIME_OUT_LAG = 10
+ALERT_REPORTS_WORKING_TIME_OUT_LAG = int(timedelta(seconds=10).total_seconds())
# if ALERT_REPORTS_WORKING_TIME_OUT_KILL is True, set a celery hard timeout
# Equal to working timeout + ALERT_REPORTS_WORKING_SOFT_TIME_OUT_LAG
-ALERT_REPORTS_WORKING_SOFT_TIME_OUT_LAG = 1
+ALERT_REPORTS_WORKING_SOFT_TIME_OUT_LAG = int(timedelta(seconds=1).total_seconds())
# If set to true no notification is sent, the worker will just log a message.
# Useful for debugging
ALERT_REPORTS_NOTIFICATION_DRY_RUN = False
@@ -1020,7 +1018,7 @@ EMAIL_REPORTS_CRON_RESOLUTION = 15
# by celery.
#
# Warning: This config key is deprecated and will be removed in version 2.0.0"
-EMAIL_ASYNC_TIME_LIMIT_SEC = 300
+EMAIL_ASYNC_TIME_LIMIT_SEC = int(timedelta(minutes=5).total_seconds())
# 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.
@@ -1064,9 +1062,8 @@ WEBDRIVER_OPTION_ARGS = ["--headless", "--marionette"]
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
+# Time selenium will wait for the page to load and render for the email report.
+EMAIL_PAGE_RENDER_WAIT = int(timedelta(seconds=30).total_seconds())
# Send user to a link where they can report bugs
BUG_REPORT_URL = None
@@ -1134,8 +1131,8 @@ 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, 'None', 'Lax', 'Strict']
-# Flask configuration variables
-SEND_FILE_MAX_AGE_DEFAULT = 60 * 60 * 24 * 365 # Cache static resources
+# Cache static resources.
+SEND_FILE_MAX_AGE_DEFAULT = int(timedelta(days=365).total_seconds())
# URI to database storing the example data, points to
# SQLALCHEMY_DATABASE_URI by default if set to `None`
@@ -1196,7 +1193,7 @@ GLOBAL_ASYNC_QUERIES_JWT_COOKIE_SECURE = False
GLOBAL_ASYNC_QUERIES_JWT_COOKIE_DOMAIN = None
GLOBAL_ASYNC_QUERIES_JWT_SECRET = "test-secret-change-me"
GLOBAL_ASYNC_QUERIES_TRANSPORT = "polling"
-GLOBAL_ASYNC_QUERIES_POLLING_DELAY = 500
+GLOBAL_ASYNC_QUERIES_POLLING_DELAY = int(timedelta(milliseconds=500).total_seconds() * 1000)
GLOBAL_ASYNC_QUERIES_WEBSOCKET_URL = "ws://127.0.0.1:8080/"
# A SQL dataset health check. Note if enabled it is strongly advised that the callable