Django项目定期自动清除过期session的2种方法实例

2022-08-01 12:12:58

目录非自动方法第一种方法通用方法(利用APScheduler定时清除)安装插件添加定时任务添加如下代码在wsgi.py运行效果利用宝塔面板(baota)的计划面板(shell脚本)进入shell编辑面...

目录
非自动方法
第一种方法通用方法(利用APScheduler定时清除)
安装插件
添加定时任务
添加如下代码在wsgi.py
运行效果
利用宝塔面板(baota)的计划面板(shell脚本)
进入shell编辑面
编写shell脚本
执行脚本 
运行效果
总结

非自动方法

python manage.py clearsessions

第一种方法通用方法(利用APScheduler定时清除)

安装插件

pip install apscheduler

添加定时任务

找到项目同名的app文件夹中的wsgi.py

Django项目定期自动清除过期session的2种方法实例

添加如下代码在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:

Django项目定期自动清除过期session的2种方法实例

运行:

Django项目定期自动清除过期session的2种方法实例

clear session data base !!

注意:警告不属于报错!!

运行后数据库中session: 

Django项目定期自动清除过期session的2种方法实例

显而易见,所有过期的sessions全部被清理了

完成

以后运行django项目时候每天都会自动在规定时间里面清除过期的sessions

利用宝塔面板(baota)的计划面板(shell脚本)

由于我的项目是利用宝塔搭建在服务器上的,所以我也使用了很多宝塔的自动化脚本进行运行和维护我的服务器

进入shell编辑面

计划任务 -> 任务类型(shell脚本)-> 任http://www.cppcns.com务名称(自行命名)-> 执行周期(自行设置)

Django项目定期自动清除过期session的2种方法实例

编写shell脚本

#!/bin/sh
#cd manage.py所在的项目文件夹
cd /www/wwwroot/vedio
pyjavascriptthon3 manage.py clearsessions

Django项目定期自动清除过期session的2种方法实例

执行脚本 

Django项目定期自动清除过期session的2种方法实例

运行效果

运行前数据库中session:十六条session数据,六条过期session

Django项目定期自动清除过期session的2种方法实例

执行日志:

Django项目定期自动清除过期session的2种方法实例

 运行后数据库中session:十条数据,过期的已经被删掉了

Django项目定期自动清除过期session的2种方法实例

完成

以后运行django项目时候每天都会自动在规定时间里面清除过期的sessions

总结

到此这篇关于Django项目定期自动清除过期session的文章就介绍到这了,更多相关Django定期自动清除过期session内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!