【问题标题】:Changing Django code logs me out of application更改 Django 代码使我退出应用程序
【发布时间】:2015-06-18 00:41:56
【问题描述】:

我是 Django 新手。我写了一个基本的应用程序。当我测试它时,我在 Python 代码中所做的每一个小改动都会让我从 localhost 中退出。

当我使用这个缓存后端时会发生这种情况:

'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',

但是当我使用这个时没有:

'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',

有什么方法可以让我继续使用 locmem 但不会退出?

【问题讨论】:

  • 您更改了哪些文件导致了这种情况?我不记得上次在编码会话期间退出是什么时候了。
  • 一般来说几乎所有与 Django 相关的代码
  • 如果您因任何更改而被注销,除了缓存后端之外,您的代码还有其他问题。

标签: python django memory


【解决方案1】:

我猜您的SESSION_ENGINE setting 设置为cache,并且您正在使用开发服务器。

如果是这样,那么您所看到的行为就很合理了。当您更改 Python 代码时,开发服务器会自动重新启动,从而丢失内存中的所有数据。由于其中包括包含会话信息的缓存,因此您也会丢失它,从而迫使每个人重新登录。

documentation 提到了这一点:

警告

如果您使用 Memcached 缓存后端,则应仅使用基于缓存的会话。本地内存缓存后端保留数据的时间不够长,不是一个不错的选择。

由于您想保留LocMemCache,您应该使用不同的会话后端。一个简单的方法可能是基于 cookie 的后端,但请查看 documentation 以查看您的所有选项。

【讨论】:

  • 非常感谢。我很幸运自己也能解决这个问题:)
  • 此外,即使我不更改代码,而是从一页移动到另一页,我也会被注销。它不是 100% 可重现的,但可能是 40% 左右。我猜这是因为缓存已满,因此会话数据已从缓存中删除。有什么调试建议吗?
  • 实际上我发现问题是因为我使用的是本地内存并且会话正在从缓存中删除
  • 你知道localmem大小是否可以增加吗?
猜你喜欢
  • 2020-07-11
  • 2021-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-19
相关资源
最近更新 更多