我正在Django中進行會話。Django:清除django_session表中的會話
默認情況下,django將會話存儲在django_session中,我發現沒有辦法清除會話。
雖然clearsession可以用來刪除行。還建議將其作爲cron作業運行。
但這樣做意味着註銷所有登錄用戶..好嗎? (不確定)
這是正確的做法嗎?
我正在Django中進行會話。Django:清除django_session表中的會話
默認情況下,django將會話存儲在django_session中,我發現沒有辦法清除會話。
雖然clearsession可以用來刪除行。還建議將其作爲cron作業運行。
但這樣做意味着註銷所有登錄用戶..好嗎? (不確定)
這是正確的做法嗎?
Django的documentation國家(重點從我):
清除會話存儲
隨着用戶創建自己的網站新的會話,會話數據可以 累積在你的會話存儲。如果您使用的是後端數據庫 ,那麼
django_session
數據庫表將會增長。如果您使用 文件後端,您的臨時目錄將包含增加的文件數 。要理解此問題,請考慮數據庫 後端會發生什麼情況。當用戶登錄時,Django向數據庫表添加一行。每次會話數據 更改時,Django都會更新此行。如果用戶手動註銷,則Django刪除該行。但是如果 用戶沒有註銷,該行永遠不會被刪除。類似的 過程發生在文件後端。
Django不提供自動清除過期會話。 因此,定期清理過期會話是您的工作。 Django爲此提供了清理管理命令:
clearsessions
。建議以常規的 爲基礎調用此命令,例如每日cron作業。請注意,緩存後端不容易出現此問題,因爲 緩存會自動刪除陳舊的數據。 Cookie後端 也不是,因爲會話數據是由用戶的瀏覽器存儲的。
找到鏈接Abid A's answer。
clearsessions
命令可以運行一個cron作業或直接清理過期會話。
因此它不會註銷每個用戶。
正如凱文克里斯托弗亨利在comment和其他possible duplicate您的問題flagged by e4c5所述。
Django的1.6以上
python manage.py clearsessions
Django的1.5或更低
python manage.py cleanup
從Django的殼牌
from django.contrib.sessions.models import Session
Django的會話清除在註銷 cornJob
結算會議(基於會話密鑰存在於請求)
Session.objects.all().delete()
from django.contrib.sessions.models import Session
session_key = request.data['sessionKey']
session = Session.objects.get(session_key=session_key)
Session.objects.filter(session_key=session).delete()
Session.objects.all().delete()
的可能的複製[Django的:會話數據庫表清理](http://stackoverflow.com/questions/7296159/django-session-database-table-清理) –
不,'clearsessions'只會清除過期的會話。 –
[刪除所有用戶的會話密鑰]可能重複(http://stackoverflow.com/questions/30864711/delete-session-key-from-all-users) – e4c5