Почему Django не использует указанный серверный кэш?

В качестве простого теста я пытаюсь настроить серверную часть кэша, используемую Django, на что-то отличное от значения по умолчанию django.core.cache.backends.locmem.LocMemCache. Я использую пользовательский серверный модуль, определенный в пакете django-bmemcached, который использует модуль python-binary-memcached для доступа к экземпляру Memcached с аутентификацией. Я настроил серверную часть в файле settings.py с соответствующим фрагментом ниже:

CACHES = {
    'default': {
        'BACKEND': 'django_bmemcached.memcached.BMemcached',
        'LOCATION': <ip>:<port>,
        'OPTIONS': {
            'username': <username>,
            'password': <password>,
        }
    },
}

Файл settings.py используется приложением, но используемый кэш по умолчанию не является указанным внутренним кэшем:

>>> from django.conf import settings
>>> print(settings.CACHES)
{'default': {'BACKEND': 'django_bmemcached.memcached.BMemcached', 'LOCATION': <ip>:<port>, 'OPTIONS': {'username': <username>, 'password': <password>}}}
>>> from django.core.cache import caches
>>> print(caches['default'])
<django.core.cache.backends.locmem.LocMemCache object at 0x73bf66531720>

Это не вызвано тем, что сторонний пакет переопределяет серверную часть кэша, и к экземпляру Memcached можно получить доступ и успешно выполнить операции, если создан экземпляр клиента для серверной части: bmemcached.Client(<ip>:<port>, <username>, <password>).

Использование другой привязки, такой как pymemcache, и настройка серверной части на поддерживаемый Django django.core.cache.backends.memcached.PyMemcacheCache по-прежнему приводит к описанным выше проблемам, когда используемый по умолчанию кэш не используется. указанный серверный сервер кэша.

Если это вообще возможно, я бы хотел иметь возможность просто использовать Django cache API, from django.core.cache import cache, чтобы иметь возможность доступа к экземпляру Memcached на основе серверной части, установленной в settings.py.

Возможно, я пропустил какую-то настройку? Возвращается ли Django к настройкам по умолчанию в кэше памяти из-за молчаливого исключения? Я был бы признателен за любую информацию!

В файле settings.py до того, как были обнаружены настройки кэша, я создал экземпляр локального клиента, который использовал Django cache API и, таким образом, установил серверную часть кэша по умолчанию django.core.cache.backends.locmem.LocMemCache.

Перенос настроек кэша в файл вверх перед созданием экземпляра локального клиента позволил установить правильную django_bmemcached.memcached.BMemcached серверную часть, как указано.

Вернуться на верх