flush_memcached: Respect DJANGO_SETTINGS_MODULE.

We don’t need to flush anything for zproject.test_settings, which
disables memcached.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg
2025-06-17 19:02:54 -07:00
committed by Tim Abbott
parent 2539d9774e
commit cdbe2d157f

View File

@@ -4,19 +4,24 @@ import sys
BASE_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "../..")
sys.path.append(BASE_DIR)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "zproject.settings")
from scripts.lib.setup_path import setup_path
setup_path()
import bmemcached
from zproject import settings
from django.conf import settings
cache = settings.CACHES["default"]
assert isinstance(cache, dict) # for mypy
client = bmemcached.Client((cache["LOCATION"],), **cache["OPTIONS"])
try:
client.flush_all()
finally:
client.disconnect_all()
match cache["BACKEND"]:
case "django.core.cache.backends.locmem.LocMemCache":
pass
case "zerver.lib.singleton_bmemcached.SingletonBMemcached":
client = bmemcached.Client((cache["LOCATION"],), **cache["OPTIONS"])
try:
client.flush_all()
finally:
client.disconnect_all()
case _:
raise ValueError(f"Unrecognized cache backend {cache['BACKEND']}")