在内存变量+ Django中

Izz*_*sin 1 python django

假设你必须使用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]
Run Code Online (Sandbox Code Playgroud)

在运行相同代码库的多个项目的情况下,这将如何表现?将OBJECT_CACHE是为每个项目唯一的,还是会与所有项目的对象混在一起?

Mar*_*rau 6

对于每个正在运行的进程,它将是唯一的"缓存"(有多少取决于您的环境和配置)

但无论如何,这不是正确的方法.Django使用本地内存缓存构建缓存,这与您的方法基本相同,但有一点好处,您可以毫不费力地交换"真正的"缓存.

您将其添加到settings.py:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
        'LOCATION': 'unique-snowflake'
    }
}
Run Code Online (Sandbox Code Playgroud)

你完成了.现在您可以使用标准Django接口访问缓存:

>>> from django.core.cache import cache
>>> cache.set('my_key', 'hello, world!', 30)
>>> cache.get('my_key')
'hello, world!'
Run Code Online (Sandbox Code Playgroud)

有关信息,请参阅Django文档.