48 lines
1.2 KiB
Python
48 lines
1.2 KiB
Python
|
#!/usr/bin/env python3
|
||
|
|
||
|
# This script clears expired sessions in a regular interval
|
||
|
# The interval is defined (in minutes) by config.sh (SESSION_CLEAR_INTERVAL)
|
||
|
|
||
|
import os
|
||
|
|
||
|
from pathlib import Path
|
||
|
from subprocess import run
|
||
|
from time import sleep
|
||
|
from datetime import datetime
|
||
|
|
||
|
try:
|
||
|
|
||
|
exiting = False
|
||
|
clear_running = False
|
||
|
|
||
|
print("[session-clear-scheduler] Starting session-clear-scheduler.")
|
||
|
|
||
|
session_clear_script_fp = Path("lib/clear-expired-sessions.sh")
|
||
|
clear_interval_seconds = int(os.environ["SESSION_CLEAR_INTERVAL"]) * 60
|
||
|
|
||
|
sleep(10) # wait some seconds before the first session clean-up
|
||
|
|
||
|
while True:
|
||
|
|
||
|
clear_running = True
|
||
|
run(["/bin/sh", session_clear_script_fp.absolute()])
|
||
|
clear_running = False
|
||
|
|
||
|
print(f"[session-clear-scheduler: {datetime.now()}] Cleared expired sessions.")
|
||
|
|
||
|
if exiting:
|
||
|
break
|
||
|
|
||
|
sleep(clear_interval_seconds)
|
||
|
|
||
|
except KeyboardInterrupt:
|
||
|
|
||
|
exiting = True
|
||
|
|
||
|
if clear_running:
|
||
|
print(f"[session-clear-scheduler: {datetime.now()}] Received SIGINT. Waiting for current clear process to finish.")
|
||
|
sleep(20) # wait some time
|
||
|
|
||
|
print(f"[session-clear-scheduler: {datetime.now()}] Exiting")
|
||
|
exit(0)
|