28 августа 2023 Python Docker Django


Задача, извлеч значение настроек запущенного контейнера Django.

Например, необходимо сбросить локальный кешь Django, настройки этого кеша находятся в settings.py файле в словаре


CACHES = {
    "default": {
        "BACKEND": "django.core.cache.backends.filebased.FileBasedCache",
        "LOCATION": "/var/tmp/django_cache-{}".format(SITE_PREFIX),
        "TIMEOUT": 360,
        "OPTIONS": {
            "MAX_ENTRIES": 1000
        }
    },
    "redis": {
        "BACKEND": "django_redis.cache.RedisCache",

        "LOCATION": REDIS_LOCATION,

        "OPTIONS": {
            "CONNECTION_POOL_KWARGS": {"max_connections": 100}
        }
    },
}

В данном случае необходимо извлеч значение CACHES -> default -> LOCATION

Если Django запущено в контейнере то извлечь это значение можно вот таким образом

docker-compose exec -e DJANGO_SETTINGS_MODULE=centrsvet.settings django poetry run python -c 'from django.conf import settings;print(settings.CACHES["default"]["LOCATION"])'
/var/tmp/django_cache-T1

Представленная команда состоит из целого ряда компонентов

  1. docker-compose exec django — обращение виртуальной среде контейнера с Django
  2. -e DJANGO_SETTINGS_MODULE=centrsvet.settings — передача переменной окружения необходимой для корректной загрузки Django
  3. poetry run python -c — запуск Django в контесте менеджера проекта poetry
  4. from django.conf import settings;print(settings.CACHES["default"]["LOCATION"]) — запуск python команды импортирующей настройки и отображающий необходимый параметр