You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django使用cached_db会话引擎时触发SessionInterrupted异常的问题咨询

Django使用cached_db会话引擎时触发SessionInterrupted异常的问题咨询

环境与配置情况

我当前使用的是Django 3.2版本,会话采用Redis缓存存储。之前用的是django.contrib.sessions.backends.cache会话引擎,后来根据Django官方文档的建议切换到了django.contrib.sessions.backends.cached_db,文档里提到:

This avoids edge cases caused by unreliable data storage in production.

遇到的异常问题

切换之后,时不时会出现一个问题:当我往会话里存储数据时,Django会崩溃并抛出SessionInterrupted The request's session was deleted before the request completed这个错误。

我做了一些调试,发现问题根源:
当会话内容被更新后,Django会尝试把它保存到数据库里,但此时数据库里对应的会话记录已经不存在了。而会话保存时用了force_update=True这个参数(在django.contrib.sessions.backends.db.py中定义,被django.contrib.sessions.backends.cached_db.py调用),这就导致更新操作失败,进而抛出了这个异常。

当前的会话相关配置

SESSION_EXPIRE_AT_BROWSER_CLOSE = False
SESSION_COOKIE_AGE = 1209600  # 2 weeks in seconds
SESSION_REMEMBER = True

我的疑问

想请教大家几个问题:

  • 怎么解决这个SessionInterrupted异常?
  • 数据库里的会话记录为什么会消失?会不会是超时导致的?
  • 为什么会话保存的逻辑要使用force_update=True?我尝试去掉这个参数后,问题确实解决了,但想知道背后的原因。

备注:内容来源于stack exchange,提问作者Davy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 07:09:35