首頁 > 軟體

Django專案定期自動清除過期session的2種方法範例

2022-08-01 18:05:09

非自動方法

python manage.py clearsessions

第一種方法通用方法(利用APScheduler定時清除)

安裝外掛

pip install apscheduler

新增定時任務

找到專案同名的app資料夾中的wsgi.py

修改wsgi.py

新增如下程式碼在wsgi.py

import os
 
from apscheduler.schedulers.background import BackgroundScheduler
 
scheduler = BackgroundScheduler()
 
 
# 定時任務, 清空session資料庫,這個庫不清的話,會不停的增大
#days為int值,幾天一清理
#start_date開始日期
@scheduler.scheduled_job(trigger='interval', days=1,start_date='2022-05-02 20:08:00', id='clear_session')
 
def clear_session_job():
    print('clear session data base')
    # 命令列執行python manage.py clearsessions,可以清除已經失效的session
    os.system('python manage.py clearsessions')
 
 
scheduler.start()

執行效果

執行前資料庫中session:

執行:

clear session data base !!

注意:警告不屬於報錯!!

執行後資料庫中session: 

顯而易見,所有過期的sessions全部被清理了

完成

以後執行django專案時候每天都會自動在規定時間裡面清除過期的sessions

利用寶塔面板(baota)的計劃面板(shell指令碼)

由於我的專案是利用寶塔搭建在伺服器上的,所以我也使用了很多寶塔的自動化指令碼進行執行和維護我的伺服器

進入shell編輯面

計劃任務 -> 任務型別(shell指令碼)-> 任務名稱(自行命名)-> 執行週期(自行設定)

編寫shell指令碼

#!/bin/sh
#cd manage.py所在的專案資料夾
cd /www/wwwroot/vedio
python3 manage.py clearsessions

執行指令碼 

執行效果

執行前資料庫中session:十六條session資料,六條過期session

執行紀錄檔:

 執行後資料庫中session:十條資料,過期的已經被刪掉了

完成

以後執行django專案時候每天都會自動在規定時間裡面清除過期的sessions

總結

到此這篇關於Django專案定期自動清除過期session的文章就介紹到這了,更多相關Django定期自動清除過期session內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com