python Django会让session.flush()使数据库会话条目过期吗?[duplicate]

nhhxz33t  于 2023-02-02  发布在  Python
关注(0)|答案(1)|浏览(180)
    • 此问题在此处已有答案**:

Delete session key from all users(3个答案)
六年前关闭了。
根据Django文档here on session functionality:
request.session.flush()
从会话中删除当前会话数据并删除会话cookie。(django. contrib. auth. logout()函数调用它)
但是它是否也会自动使数据库表中的会话条目过期呢?
因为如果不这样做,我认为这可能会导致表中不必要地建立不可用但未过期的会话。

rpppsulh

rpppsulh1#

是的,如果你看一下源代码,文档字符串明确指出:

def flush(self):
    """
    Removes the current session data from the database and regenerates the
    key.
    """
    self.clear()
    self.delete()
    self._session_key = None

也就是说,会有一个过期的会话建立。这就是为什么你应该设置一个预定的作业来清除他们使用clearsessions管理命令:
Django不提供自动清除过期会话的功能。因此,定期清除过期会话是你的工作。Django为此提供了一个清理管理命令:clearsessions。建议定期调用此命令,例如作为日常cron作业。

相关问题