Fix SIGINT termination issues

This commit is contained in:
s3lph 2020-02-03 23:39:51 +01:00
parent 18c720fdab
commit 8700023349
3 changed files with 13 additions and 6 deletions

View file

@ -1,11 +1,11 @@
from typing import Any, Dict, Iterable, Union from typing import Any, Dict, Iterable, Union
from bottle import route, static_file, run
import sys import sys
import os.path import os.path
import bottle
from matemat.db import MatematDatabase from matemat.db import MatematDatabase
from matemat.webserver import cron
from matemat.webserver.logger import Logger from matemat.webserver.logger import Logger
from matemat.webserver.config import get_config, parse_config_file from matemat.webserver.config import get_config, parse_config_file
from matemat.webserver.template import init as template_init from matemat.webserver.template import init as template_init
@ -59,11 +59,11 @@ def _init(config: Dict[str, Any]):
template_init(config) template_init(config)
@route('/static/<filename:path>') @bottle.route('/static/<filename:path>')
def serve_static_files(filename: str): def serve_static_files(filename: str):
config = get_config() config = get_config()
staticroot = os.path.abspath(config['staticroot']) staticroot = os.path.abspath(config['staticroot'])
return static_file(filename, root=staticroot) return bottle.static_file(filename, root=staticroot)
def main(): def main():
@ -80,8 +80,12 @@ def main():
host: str = config['listen'] host: str = config['listen']
port: int = int(str(config['port'])) port: int = int(str(config['port']))
# noinspection PyUnresolvedReferences
from matemat.webserver.pagelets.receipt_smtp_cron import receipt_smtp_cron
# Start the web server # Start the web server
run(host=host, port=port, debug=True) bottle.run(host=host, port=port)
# Stop cron
cron.shutdown()
if __name__ == '__main__': if __name__ == '__main__':

View file

@ -8,6 +8,10 @@ from matemat.webserver import Logger
_CRON_STATIC_EVENT: Event = Event() _CRON_STATIC_EVENT: Event = Event()
def shutdown(*_args, **_kwargs):
_CRON_STATIC_EVENT.set()
class _GlobalEventTimer(Thread): class _GlobalEventTimer(Thread):
""" """
A timer similar to threading.Timer, except that waits on an externally supplied threading.Event instance, A timer similar to threading.Timer, except that waits on an externally supplied threading.Event instance,

View file

@ -15,4 +15,3 @@ from .moduser import moduser
from .modproduct import modproduct from .modproduct import modproduct
from .userbootstrap import userbootstrap from .userbootstrap import userbootstrap
from .statistics import statistics from .statistics import statistics
from .receipt_smtp_cron import receipt_smtp_cron