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]

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

最佳答案

它将为每个正在运行的进程提供唯一的“缓存”(多少取决于您的环境和配置)

但无论如何,这不是正确的做法。 Django 内置缓存和内置本地内存缓存,这与您的方法基本相同,但好处是您可以毫不费力地交换“真实”缓存。

将其添加到您的 settings.py 中:

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

你就完成了。现在您可以使用标准的 Django 接口(interface)访问缓存:

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

参见 Django docs对于信息。

关于python - 在内存变量 + Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9243015/

相关文章:

django - 默认方法执行顺序(Ex :- POST vs perform_create)in Django rest framework class based Views

Django:发布重定向后,在表单上提供验证错误反馈

Django:跳过模型验证

python - 如何为特定应用程序中的特定模型添加额外按钮到 Django Admin 中的 "Change List"页面?

python - Pandas Groupby - 命名聚合输出列

python - 如何在Go上运行python脚本

python - 如何设置celery生产者发送任务超时

python - 对索引列组合的数据帧求和

python - PySide 中缺少 Q_ARG - 如何继续?

django - 在 Django Admin 中保存有时会失败