Функция Monkey patch django.util.cache

У меня возникли проблемы с выяснением того, как обезьяна исправляет несколько функций в django.util.cache. Я не хочу писать свое собственное промежуточное ПО для кэширования, мне просто нужны ключи, которые немного легче проглотить. Свойство make_key в бэкэндах кеша также не подходит для моего варианта использования.

я пытался добавить

from django.utils.cache import _generate_cache_key, _generate_cache_header_key
from spark_core import middleware

_generate_cache_key = middleware._generate_cache_key
_generate_cache_header_key = middleware._generate_cache_header_key

в нижней части моего файла settings.py, но с этим мне не повезло. Я использую кеш для каждого сайта.


person Jack Slingerland    schedule 18.08.2014    source источник
comment
что не так с подклассом вашего бэкэнда кеша и переопределением метода make_key?   -  person ambi    schedule 18.08.2014
comment
К тому времени, когда make_key вызывается серверной частью, _generate_cache_key уже вызывается.   -  person Jack Slingerland    schedule 18.08.2014
comment
Я не уверен, где именно используется _generate_cache_key, но попробуйте просто создать подкласс вашего бэкенда кеша и переопределить метод make_key.   -  person ambi    schedule 18.08.2014
comment
Я так и сделал, и значение key, которое передается в make_key, является значением, сгенерированным _generate_cache_key. Он не передает никакой информации вместе с тем, как он сгенерировал ключ (путь, аргументы и т. д.), поэтому я не могу просто переопределить make_key для настройки ключа, потому что у меня нет доступа к информации, которая мне нужна в нем.   -  person Jack Slingerland    schedule 18.08.2014
comment
Я думаю, что импорт кода django в settings.py — не лучшая идея, так как различные модули djnago полагаются на загруженный settings.py для работы. Лучше поместить это в models.py файл.   -  person jb.    schedule 19.08.2014