2016-09-13 29 views
0

根據Django文檔 hereDjango會session.flush()過期數據庫會話條目?

request.session.flush()

從會話刪除當前會話的數據並刪除會話cookie。 (django.contrib.auth.logout()函數調用它)

但它是否也會自動過期數據庫表內的會話條目?

因爲如果它沒有,我認爲這可能會導致表中不可用但不過期的會話不必要的建立。

回答

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

+0

感謝您的回覆。但是,如果我可能會問,我如何查看文檔中的源代碼?有沒有鏈接到我沒有看到的github行或我必須手動瀏覽存儲庫以找到它們? – AlanSTACK

+0

我手動搜索過,但有時在文檔中包含'[source]'鏈接。有關示例,請參見[this one](https://docs.djangoproject.com/en/1.10/ref/utils/#module-django.utils.text)。 – Selcuk