Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 内存中变量+Django_Python_Django - Fatal编程技术网

Python 内存中变量+Django

Python 内存中变量+Django,python,django,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] 在多个项目运行同一代码库的情况下

假设您必须使用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]

在多个项目运行同一代码库的情况下,这将如何表现?对象缓存对于每个项目都是唯一的,还是与所有项目中的对象混合在一起?

对于每个正在运行的进程来说,都是唯一的缓存,具体数量取决于您的环境和配置

但无论如何,这不是正确的方法。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具有内置缓存和内置本地内存缓存,这与您的方法基本相同,但好处是您可以在真正的缓存中进行交换,而无需任何努力

您可以将其添加到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!'
有关信息,请参阅