diff --git a/src/paperless/settings.py b/src/paperless/settings.py index e77fceb96..41146e717 100644 --- a/src/paperless/settings.py +++ b/src/paperless/settings.py @@ -918,7 +918,6 @@ CELERY_BEAT_SCHEDULE_FILENAME = str(DATA_DIR / "celerybeat-schedule.db") # Cachalot: Database read cache. def _parse_cachalot_settings(): - global INSTALLED_APPS ttl = __get_int("PAPERLESS_READ_CACHE_TTL", 3600) ttl = min(ttl, 31536000) if ttl > 0 else 3600 _, redis_url = _parse_redis_url( @@ -936,18 +935,18 @@ def _parse_cachalot_settings(): "CACHALOT_REDIS_URL": redis_url, "CACHALOT_TIMEOUT": ttl, } - if result["CACHALOT_ENABLED"]: - INSTALLED_APPS.append("cachalot") return result -_cachalot_settings = _parse_cachalot_settings() -CACHALOT_ENABLED = _cachalot_settings["CACHALOT_ENABLED"] -CACHALOT_CACHE = _cachalot_settings["CACHALOT_CACHE"] -CACHALOT_TIMEOUT = _cachalot_settings["CACHALOT_TIMEOUT"] -CACHALOT_QUERY_KEYGEN = _cachalot_settings["CACHALOT_QUERY_KEYGEN"] -CACHALOT_TABLE_KEYGEN = _cachalot_settings["CACHALOT_TABLE_KEYGEN"] -CACHALOT_FINAL_SQL_CHECK = _cachalot_settings["CACHALOT_FINAL_SQL_CHECK"] +cachalot_settings = _parse_cachalot_settings() +CACHALOT_ENABLED = cachalot_settings["CACHALOT_ENABLED"] +if CACHALOT_ENABLED: # pragma: no cover + INSTALLED_APPS.append("cachalot") +CACHALOT_CACHE = cachalot_settings["CACHALOT_CACHE"] +CACHALOT_TIMEOUT = cachalot_settings["CACHALOT_TIMEOUT"] +CACHALOT_QUERY_KEYGEN = cachalot_settings["CACHALOT_QUERY_KEYGEN"] +CACHALOT_TABLE_KEYGEN = cachalot_settings["CACHALOT_TABLE_KEYGEN"] +CACHALOT_FINAL_SQL_CHECK = cachalot_settings["CACHALOT_FINAL_SQL_CHECK"] # Django default & Cachalot cache configuration @@ -968,7 +967,7 @@ def _parse_caches(): }, "read-cache": { "BACKEND": _CACHE_BACKEND, - "LOCATION": _parse_cachalot_settings()["CACHALOT_REDIS_URL"], + "LOCATION": cachalot_settings["CACHALOT_REDIS_URL"], "KEY_PREFIX": _REDIS_KEY_PREFIX, }, } @@ -977,9 +976,6 @@ def _parse_caches(): CACHES = _parse_caches() -del _cachalot_settings - - def default_threads_per_worker(task_workers) -> int: # always leave one core open available_cores = max(multiprocessing.cpu_count(), 1) diff --git a/src/paperless/tests/test_db_cache.py b/src/paperless/tests/test_db_cache.py index f00d0824c..ae9066ca1 100644 --- a/src/paperless/tests/test_db_cache.py +++ b/src/paperless/tests/test_db_cache.py @@ -63,26 +63,20 @@ class TestDbCacheSettings: }, ) def test_cachalot_custom_settings(self): - cachalot_settings = _parse_cachalot_settings() - assert "cachalot" in settings.INSTALLED_APPS - caches = _parse_caches() + settings = _parse_cachalot_settings() - # Modifiable settings - assert cachalot_settings["CACHALOT_ENABLED"] - assert cachalot_settings["CACHALOT_TIMEOUT"] == 7200 - assert caches["read-cache"]["LOCATION"] == "redis://localhost:6380/7" - - # Fixed settings - assert cachalot_settings["CACHALOT_CACHE"] == "read-cache" + assert settings["CACHALOT_ENABLED"] + assert settings["CACHALOT_TIMEOUT"] == 7200 + assert settings["CACHALOT_CACHE"] == "read-cache" assert ( - cachalot_settings["CACHALOT_QUERY_KEYGEN"] + settings["CACHALOT_QUERY_KEYGEN"] == "paperless.db_cache.custom_get_query_cache_key" ) assert ( - cachalot_settings["CACHALOT_TABLE_KEYGEN"] + settings["CACHALOT_TABLE_KEYGEN"] == "paperless.db_cache.custom_get_table_cache_key" ) - assert cachalot_settings["CACHALOT_FINAL_SQL_CHECK"] is True + assert settings["CACHALOT_FINAL_SQL_CHECK"] is True @pytest.mark.parametrize( ("env_var_ttl", "expected_cachalot_timeout"),