Release 15 - Revamp #38
5 changed files with 71 additions and 11 deletions
|
@ -57,7 +57,8 @@ This also runs all necessary migrations.
|
||||||
# Activate venv
|
# Activate venv
|
||||||
|
|
||||||
**On every new session**, before running commands with
|
**On every new session**, before running commands with
|
||||||
manage.py or developing, you have to activate the venv:
|
manage.py, running special scripts, or developing,
|
||||||
|
you have to activate the virtual environment:
|
||||||
```
|
```
|
||||||
source ./venv/bin/activate
|
source ./venv/bin/activate
|
||||||
```
|
```
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/usr/bin/env python
|
#!./venv/bin/python3
|
||||||
"""Django's command-line utility for administrative tasks."""
|
"""Django's command-line utility for administrative tasks."""
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
|
@ -131,13 +131,15 @@ if __name__ == "__main__":
|
||||||
"Caddy Webserver",
|
"Caddy Webserver",
|
||||||
["caddy", "run", "--config", str(caddyfile)],
|
["caddy", "run", "--config", str(caddyfile)],
|
||||||
None,
|
None,
|
||||||
environment=environment_caddy
|
environment=environment_caddy),
|
||||||
),
|
|
||||||
MonitoredSubprocess(
|
MonitoredSubprocess(
|
||||||
"Django Development Server",
|
"Django Development Server",
|
||||||
["./venv/bin/python3", "./manage.py", "runserver", str(config["app"]["application_port"])],
|
["./venv/bin/python3", "./manage.py", "runserver", str(config["app"]["application_port"])],
|
||||||
None
|
None),
|
||||||
),
|
MonitoredSubprocess(
|
||||||
|
"Session Autocleaner",
|
||||||
|
["./scripts/_session-autocleaner.py", str(config["app"]["session_clear_interval"])],
|
||||||
|
None)
|
||||||
]
|
]
|
||||||
start_and_monitor(procs)
|
start_and_monitor(procs)
|
||||||
else:
|
else:
|
||||||
|
@ -151,8 +153,7 @@ if __name__ == "__main__":
|
||||||
"Caddy Webserver",
|
"Caddy Webserver",
|
||||||
["caddy", "run", "--config", str(caddyfile)],
|
["caddy", "run", "--config", str(caddyfile)],
|
||||||
logfile_caddy,
|
logfile_caddy,
|
||||||
environment=environment_caddy
|
environment=environment_caddy),
|
||||||
),
|
|
||||||
MonitoredSubprocess(
|
MonitoredSubprocess(
|
||||||
"Drinks-Manager",
|
"Drinks-Manager",
|
||||||
[
|
[
|
||||||
|
@ -166,7 +167,10 @@ if __name__ == "__main__":
|
||||||
"project.asgi:application",
|
"project.asgi:application",
|
||||||
],
|
],
|
||||||
logfile_app,
|
logfile_app,
|
||||||
environment=environment_app
|
environment=environment_app),
|
||||||
),
|
MonitoredSubprocess(
|
||||||
|
"Session Autocleaner",
|
||||||
|
["./scripts/_session-autocleaner.py", str(config["app"]["session_clear_interval"])],
|
||||||
|
logfile_app)
|
||||||
]
|
]
|
||||||
start_and_monitor(procs)
|
start_and_monitor(procs)
|
55
scripts/_session-autocleaner.py
Executable file
55
scripts/_session-autocleaner.py
Executable file
|
@ -0,0 +1,55 @@
|
||||||
|
#!./venv/bin/python3
|
||||||
|
|
||||||
|
# This script clears expired sessions in a regular interval
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
from argparse import ArgumentParser
|
||||||
|
from atexit import register as register_exithandler
|
||||||
|
from pathlib import Path
|
||||||
|
from subprocess import Popen
|
||||||
|
from time import sleep
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
|
||||||
|
current_proc = None
|
||||||
|
|
||||||
|
|
||||||
|
def exithandler():
|
||||||
|
if current_proc is not None:
|
||||||
|
seconds_waited = 0
|
||||||
|
while current_proc.poll() is None:
|
||||||
|
# wait for 10 seconds to quit session cleaner
|
||||||
|
if seconds_waited >= 10:
|
||||||
|
current_proc.terminate()
|
||||||
|
break
|
||||||
|
# is still running
|
||||||
|
sleep(1)
|
||||||
|
seconds_waited += 1
|
||||||
|
print("Stopped session-autocleaner.")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
try:
|
||||||
|
argp = ArgumentParser()
|
||||||
|
argp.add_argument("interval", help="The interval in minutes", type=int)
|
||||||
|
args = argp.parse_args()
|
||||||
|
os.chdir(str(Path(__file__).parent.parent))
|
||||||
|
print(f"Started session-autocleaner with an interval of {args.interval} minute(s)")
|
||||||
|
interval = args.interval * 60
|
||||||
|
# register exithandler that cleans up stuff
|
||||||
|
register_exithandler(exithandler)
|
||||||
|
# main loop
|
||||||
|
while True:
|
||||||
|
if current_proc is not None:
|
||||||
|
# wait for last iteration
|
||||||
|
while current_proc.poll() is None:
|
||||||
|
# is still running
|
||||||
|
print("Last cleanup is still running, waiting before clearing sessions...")
|
||||||
|
sleep(1)
|
||||||
|
print(f"Clearing expired sessions at {datetime.now()}...")
|
||||||
|
current_proc = Popen(
|
||||||
|
["./manage.py", "clearsessions"])
|
||||||
|
sleep(interval)
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
exit()
|
2
start.sh
2
start.sh
|
@ -8,4 +8,4 @@ export PYTHONPATH="$basedir"
|
||||||
export DJANGO_SETTINGS_MODULE="project.settings"
|
export DJANGO_SETTINGS_MODULE="project.settings"
|
||||||
export APP_VERSION="revamp-pre"
|
export APP_VERSION="revamp-pre"
|
||||||
|
|
||||||
exec ./scripts/bootstrap.py "$@"
|
exec ./scripts/_bootstrap.py "$@"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue