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

时间:2013-09-13 21:06:22

标签: python django caching

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

背景:

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

我理解HTTP交互应该是无状态的,并且明知需要打破这种约束。没有什么不好的事情应该发生,因为它是只读的吗?

3 个答案:

答案 0 :(得分:3)

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

  1. 完全将数据结构移出Python(而不是每次都从存储介质加载)。例如,如果您的结构有利于它,则可以将其存储在RedisMongoDBRiakNeo4j中。 (作为奖励,如果您需要这种能力,您将能够查询数据。)
  2. 将结构移至单独的流程,并使用管道或queue进行通信。
  3. 使用memory mapped file分享数据。
  4. HTTP是无状态的,但这并不意味着您无法在请求之间保留状态。您只需自己完成工作(在应用程序级别)。该协议不适合你。 理想情况下你可以避免状态,因为它可以更容易地水平扩展,但不是每个应用程序都容易扩展

答案 1 :(得分:2)

Django,可能是大多数Web应用程序,使用caching。当然,缓存的功效取决于您如何使用它,即通过存储最常检索的数据。

答案 2 :(得分:0)

关于Django here中缓存的非常有用且内容丰富的文章。提供量化的速度改进。令人惊讶的是,通过一些调整可以获得多快的速度。