【问题标题】:Django SuspiciousOperation after upgrade to 1.10升级到 1.10 后的 Django SuspiciousOperation
【发布时间】:2018-04-18 12:58:35
【问题描述】:

最近我将我的应用程序从 1.8 升级到 1.10,现在我被这个错误淹没了:

异常类型:>

处的 SuspiciousOperation

异常值:请求的会话在请求完成之前被删除。例如,用户可能已在并发请求中注销。

我不知道为什么会发生这种情况,但似乎会话由于某种奇怪的原因提前到期。

【问题讨论】:

  • 系统时间有变化吗?
  • 系统时间不一样

标签: django


【解决方案1】:

我今天遇到了这个。对我来说,问题是会话密钥仍在缓存中,但数据库会话已被删除。中间件通过缓存加载会话,但是当它试图将其写回数据库时,它会触发 DatabaseError(无法更新任何行),然后 Session 将其重新引发为 UpdateError,然后将其捕获并引发为可疑操作。

在我的例子中,问题发生在将数据库恢复到旧版本的测试环境中,删除了数据库会话密钥。但是缓存没有被清除,所以访问过测试环境并拥有 cookie 的用户开始收到 400 错误(SuspiciousOperation)。

【讨论】:

  • 很酷,谢谢!对我来说,memcached 达到了 1MB 的限制,并开始随机从缓存中转储项目。我用 redis 替换了它并放弃了 cached_db 以支持缓存,并且效果很好。
  • 在将生产拉回开发机器后得到这个。您的解释完全有道理...您也可以通过恢复备份来获得此信息。问题是:我该如何解决?
  • @Oli 清除会话 cookie,或重新启动缓存。
【解决方案2】:

【讨论】:

  • 谢谢,我正在使用 cache_db 存储,它的配置没有任何改变,所以我认为我的设置没有错。
猜你喜欢
  • 2017-10-18
  • 2019-03-05
  • 2015-04-12
  • 2017-09-23
  • 1970-01-01
  • 1970-01-01
  • 2021-05-25
  • 1970-01-01
  • 2015-05-16
相关资源
最近更新 更多