gpt4 book ai didi

django - 通过 session key 在请求之间访问 pandas 数据框对象

转载 作者:行者123 更新时间:2023-12-04 21:13:50 25 4
gpt4 key购买 nike

我有一个带有松散包装类的 pandas 数据框,它为我的 django/DRF 应用程序提供元数据。该应用程序基本上是一种用户友好(非程序员)的方式来进行一些数据分析和验证。在请求之间,我希望能够保存数据框的状态,这样我就可以与数据进行一系列交互,但它不需要保存在数据库中(它只需要在浏览器 session 中存活)。从这里查看 django 的 session 框架是合乎逻辑的,但据我所知, session 数据应该是轻量级的,并且数据框对象不会 json 序列化。

因为我没有大量用户,并且我希望应用程序感觉像一个桌面站点,所以我正在考虑使用 django 缓存作为将数据帧对象保存在内存中的一种方式。所以把数据放在缓存中会像这样

>>> from django.core.cache import caches
>>> cache1 = caches['default']
>>> cache1.set(request.session._get_session_key, dataframe_object)

然后除了在以下请求中使用 get 来访问之外,其他相同。
这是处理此工作流程的好方法,还是我应该使用另一个系统在内存中保存相当大的数据(5mb 到 100mb)?

最佳答案

如果您在现代服务器上运行您的应用程序,那么 100mb 并不是一个巨大的内存量。但是,如果您同时有几十个用户,每个用户都需要 100mb 的缓存,那么这可能会增加您的服务器无法处理的内存。您的缓存和服务器应该适当配置,并且您可能希望限制 Python 代码中缓存数据帧的总数。

由于 Django 确实需要序列化 session 数据,因此您的选择是使用带有 PickleSerializer 的 session 或使用缓存。根据文档,出于安全原因不建议使用 PickleSerializer,因此您选择使用缓存是一个不错的选择。

Django 中的默认缓存后端不会跨进程共享条目,因此您可以通过安装 memcached 并启用 memcached.MemcachedCache 后端来获得更好的内存和时间效率。

关于django - 通过 session key 在请求之间访问 pandas 数据框对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28901486/

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