Django会session.flush()使数据库会话条目到期吗?

时间:2016-09-13 03:58:17

标签: python django database session

根据Django文档 here

request.session.flush()

  

从会话中删除当前会话数据并删除会话cookie。 (django.contrib.auth.logout()函数调用它)

但它是否也会自动使数据库表中的会话条目到期?

因为如果不这样做,我认为这可能会导致表中不必要但非过期的会话不必要的累积。

1 个答案:

答案 0 :(得分:1)

是的,确实如此。如果您查看source文档字符串明确说明:

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作业。