bis*_*ton 5 django memcached web-architecture pandas django-rest-framework
我有一个pandas数据框,周围有一个松散的包装类,为我的django/DRF应用程序提供元数据.该应用程序基本上是一种用户友好(非程序员)方式来进行一些数据分析和验证.在请求之间,我希望能够保存数据帧的状态,这样我就可以与数据进行一系列交互,但不需要将其保存在数据库中(只需要与浏览器会话一起存活).从这里可以看出django的会话框架是合乎逻辑的,但是从我所听到的会话数据应该是轻量级的,而dataframe对象不是json序列化的.
因为我没有大量的用户,并且我希望应用程序感觉像桌面站点,我正在考虑使用django缓存作为将数据帧对象保留在内存中的一种方法.因此将数据放入缓存中将会是这样的
>>> from django.core.cache import caches
>>> cache1 = caches['default']
>>> cache1.set(request.session._get_session_key, dataframe_object)
Run Code Online (Sandbox Code Playgroud)
然后相同,除了使用get访问以下请求.这是处理这个工作流程的好方法还是我应该用另一个系统来保存内存中相当大的数据(5mb到100mb)?
如果您在现代服务器上运行应用程序,那么 100mb 并不是一个巨大的内存量。但是,如果您有几十个并发用户,每个用户需要 100MB 的缓存,那么这可能会超出您的服务器可以处理的内存。您的缓存和服务器应该进行适当的配置,并且您可能希望限制 python 代码中缓存数据帧的总数。
由于 Django 确实需要序列化会话数据,因此您的选择是使用 PickleSerializer 会话或使用缓存。根据文档,出于安全原因,不建议使用 PickleSerializer,因此您选择使用缓存是一个不错的选择。
Django 中的默认缓存后端不会跨进程共享条目,因此通过安装 memcached 并启用 memcached.MemcachedCache 后端,您将获得更好的内存和时间效率。
| 归档时间: |
|
| 查看次数: |
1091 次 |
| 最近记录: |