python - 如何在 Django 请求之间在内存中保留共享数据结构

标签 python django caching

我的 Django 应用程序对性能极为敏感,所有请求都需要访问相同的数据结构。如何以所有请求都可以访问的方式存储数据结构?

背景:

我目前正在使用缓存后端。这有点慢,因为 DS 很大并且每次都必须检索和解封。

我理解 HTTP 交互应该是无状态的,并且有意识地需要打破这种约束。应该不会发生什么坏事,因为它是只读的,对吧?

最佳答案

有几种方法可以解决这个问题:

  1. 将数据结构完全移出 Python(而不是每次都从存储介质中加载)。例如,如果您的结构有利于它,您可以将其存储在 Redis 中。 , MongoDB , Riak , 或 Neo4j . (作为奖励,您可以获得查询数据的能力,如果您需要这种能力的话)。
  2. 将结构移动到单独的进程并使用管道或 queue 与其通信.
  3. 使用 memory mapped file共享数据。

HTTP 是无状态的,但这并不意味着您不能在请求之间保留状态。您只需要自己完成工作(在应用程序级别)。该协议(protocol)不会为您做这件事。 理想情况下您可以避免状态,因为它更容易水平扩展,但并非每个应用程序都容易扩展

关于python - 如何在 Django 请求之间在内存中保留共享数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18795245/

相关文章:

python - 列出 : 与::的使用

python - 如何检查表是否存在?

python - 在 Django 中打开 zip 文件中存储的照片时出错

.NET 对缓存项 (DataTable) 的引用

python - 如何获取当前登录 Flask-Login 的用户列表?

python - 使用参数 '*' 和关键字参数 '()' 找不到 '{}' 反向

python - 第 7 行 : 'endif' , 上的无效 block 标记应为 'empty' 或 'endfor'。您是否忘记注册或加载此标签?

javascript - ServiceWorker 不更新缓存

c# - 缓存 IEnumerable 与 List 以进行延迟初始化

Python Social Auth,扩展断开管道