В переменных памяти + Django - PullRequest
1 голос
/ 11 февраля 2012

Скажем, вы должны следовать коду с Python и Django.

OBJECT_CACHE = {}

def get_my_objects(key, *args, **kwargs):
    try:
        return OBJECT_CACHE[key]
    except KeyError:
        OBJECT_CACHE[key] = # code to get object
        return OBJECT_CACHE[key]

Как это будет вести себя в ситуациях, когда несколько проектов работают с одной и той же кодовой базой?Будет ли OBJECT_CACHE уникальным для каждого проекта или будет смешан с объектами из всех проектов?

1 Ответ

6 голосов
/ 11 февраля 2012

Это будет уникальный «кеш» для каждого запущенного процесса (сколько зависит от вашей среды и конфигурации)

Но в любом случае, это не правильный способ сделать это. Django имеет встроенное кеширование со встроенным кешем локальной памяти, которое по сути будет таким же, как ваш подход, но с преимуществом, которое вы сможете заменить «настоящим» кешированием без каких-либо усилий.

Вы добавляете это в свои settings.py:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
        'LOCATION': 'unique-snowflake'
    }
}

И все готово. Теперь вы можете получить доступ к кешу, используя стандартный интерфейс Django:

>>> from django.core.cache import cache
>>> cache.set('my_key', 'hello, world!', 30)
>>> cache.get('my_key')
'hello, world!'

Подробнее см. В документах Django .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...