我的 Django 应用程序对性能极为敏感,所有请求都需要访问相同的数据结构。如何以所有请求都可以访问的方式存储数据结构?
背景:
我目前正在使用缓存后端。这有点慢,因为 DS 很大并且每次都必须检索和解封。
我理解 HTTP 交互应该是无状态的,并且有意识地需要打破这种约束。应该不会发生什么坏事,因为它是只读的,对吧?
最佳答案
有几种方法可以解决这个问题:
- 将数据结构完全移出 Python(而不是每次都从存储介质中加载)。例如,如果您的结构有利于它,您可以将其存储在 Redis 中。 , MongoDB , Riak , 或 Neo4j . (作为奖励,您可以获得查询数据的能力,如果您需要这种能力的话)。
- 将结构移动到单独的进程并使用管道或 queue 与其通信.
- 使用 memory mapped file共享数据。
HTTP 是无状态的,但这并不意味着您不能在请求之间保留状态。您只需要自己完成工作(在应用程序级别)。该协议(protocol)不会为您做这件事。 理想情况下您可以避免状态,因为它更容易水平扩展,但并非每个应用程序都容易扩展
关于python - 如何在 Django 请求之间在内存中保留共享数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18795245/