0
根據Django文檔 hereDjango會session.flush()過期數據庫會話條目?
request.session.flush()
從會話刪除當前會話的數據並刪除會話cookie。 (django.contrib.auth.logout()函數調用它)
但它是否也會自動過期數據庫表內的會話條目?
因爲如果它沒有,我認爲這可能會導致表中不可用但不過期的會話不必要的建立。
根據Django文檔 hereDjango會session.flush()過期數據庫會話條目?
request.session.flush()
從會話刪除當前會話的數據並刪除會話cookie。 (django.contrib.auth.logout()函數調用它)
但它是否也會自動過期數據庫表內的會話條目?
因爲如果它沒有,我認爲這可能會導致表中不可用但不過期的會話不必要的建立。
是的,它的確如此。如果你看一下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作業。
感謝您的回覆。但是,如果我可能會問,我如何查看文檔中的源代碼?有沒有鏈接到我沒有看到的github行或我必須手動瀏覽存儲庫以找到它們? – AlanSTACK
我手動搜索過,但有時在文檔中包含'[source]'鏈接。有關示例,請參見[this one](https://docs.djangoproject.com/en/1.10/ref/utils/#module-django.utils.text)。 – Selcuk