diff --git a/redash/settings/__init__.py b/redash/settings/__init__.py index 75c438cff..ac349cfb2 100644 --- a/redash/settings/__init__.py +++ b/redash/settings/__init__.py @@ -50,6 +50,7 @@ QUERY_RESULTS_EXPIRED_TTL_ENABLED = parse_boolean(os.environ.get("REDASH_QUERY_R QUERY_RESULTS_EXPIRED_TTL = int(os.environ.get("REDASH_QUERY_RESULTS_EXPIRED_TTL", "86400")) SCHEMAS_REFRESH_SCHEDULE = int(os.environ.get("REDASH_SCHEMAS_REFRESH_SCHEDULE", 30)) +SCHEMAS_REFRESH_TIMEOUT = int(os.environ.get("REDASH_SCHEMAS_REFRESH_TIMEOUT", 300)) AUTH_TYPE = os.environ.get("REDASH_AUTH_TYPE", "api_key") INVITATION_TOKEN_MAX_AGE = int(os.environ.get("REDASH_INVITATION_TOKEN_MAX_AGE", 60 * 60 * 24 * 7)) diff --git a/redash/tasks/general.py b/redash/tasks/general.py index 35a741d82..532cbd117 100644 --- a/redash/tasks/general.py +++ b/redash/tasks/general.py @@ -50,7 +50,7 @@ def test_connection(data_source_id): return True -@job("schemas", queue_class=Queue, at_front=True, timeout=300, ttl=90) +@job("schemas", queue_class=Queue, at_front=True, timeout=settings.SCHEMAS_REFRESH_TIMEOUT, ttl=90) def get_schema(data_source_id, refresh): try: data_source = models.DataSource.get_by_id(data_source_id) diff --git a/redash/tasks/queries/maintenance.py b/redash/tasks/queries/maintenance.py index bbfebd053..bca3168c3 100644 --- a/redash/tasks/queries/maintenance.py +++ b/redash/tasks/queries/maintenance.py @@ -157,7 +157,7 @@ def remove_ghost_locks(): logger.info("Locks found: {}, Locks removed: {}".format(len(locks), count)) -@job("schemas") +@job("schemas", timeout=settings.SCHEMAS_REFRESH_TIMEOUT) def refresh_schema(data_source_id): ds = models.DataSource.get_by_id(data_source_id) logger.info("task=refresh_schema state=start ds_id=%s", ds.id)