gpt4 book ai didi

python - 请求之间 Django 中对象的对象存储

转载 作者:太空狗 更新时间:2023-10-29 21:48:00 24 4
gpt4 key购买 nike

我有以下想法:假设我们有一个使用 django 编写的 web 应用程序,它模拟某种公告板。该版 block 有很多主题,但其中一些主题每小时获得的帖子/浏览量最多。每个用户的线程页面看起来略有不同,因此您无法缓存整个呈现的页面,并且仅缓存呈现页面的某些部分也不是一种选择。

我的想法是:我在内存中创建线程的对象结构(包含显示它所需的每篇文章和其他数据)。如果发布了一条新消息,则结构会更新,并且每 X 次发布(或每 Y 分钟,以先到者为准)将新消息写回数据库。如果应用程序崩溃,一些帖子会丢失,但这绝对没问题(对于用户和管理员)。

问题:我可以没有序列化(所以没有序列化->memcached)在内存存储中创建这样的持久化存储吗?据我了解,WSGI 应用程序(如 Django)在连续过程中运行,不会在请求之间关闭,因此理论上应该是可能的。有没有我可以使用的 API?如果没有:有什么要看的吗?

/edit1:我知道“持久性”通常有不同的含义,但在这种情况下我严格指“在请求之间”。

最佳答案

在生产 WSGI 环境中,您可能会有多个工作进程同时处理请求。这些工作进程会不时被回收,这意味着本地内存对象会丢失。

但是如果你真的需要这个(并确保你这样做),我建议你看看 Django 的 caching framework ,检查本地内存缓存。另外,看看 sessions .

但即使是本地内存缓存也使用序列化(使用 pickle)。通过实现自定义缓存后端(参见 the docs),很容易在没有序列化的情况下实现本地内存缓存。您可以使用 locmem.py 中的代码作为起点来创建无序列化的缓存。

但我怀疑你在这里做了一些过早的优化?

关于python - 请求之间 Django 中对象的对象存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1351323/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com