diff --git a/run-web.py b/run-web.py index 218fe2b..b3eec7a 100644 --- a/run-web.py +++ b/run-web.py @@ -1,6 +1,9 @@ import locale import logging +import os +import signal +import sys import threading from webapp import webapp from discordbot import bot @@ -15,14 +18,31 @@ def start_discord_bot(): with webapp.app_context(): bot.begin() +def signal_handler(sig, frame): + logging.info("Arrêt immédiat...") + os._exit(0) + if __name__ == '__main__': locale.setlocale(locale.LC_TIME, 'fr_FR.UTF-8') + + signal.signal(signal.SIGINT, signal_handler) + signal.signal(signal.SIGTERM, signal_handler) jobs = [] - jobs.append(threading.Thread(target=start_discord_bot)) - jobs.append(threading.Thread(target=start_server)) + discord_thread = threading.Thread(target=start_discord_bot) + server_thread = threading.Thread(target=start_server) + + discord_thread.daemon = True + server_thread.daemon = True + + jobs.append(discord_thread) + jobs.append(server_thread) - for job in jobs: job.start() - for job in jobs: job.join() + try: + for job in jobs: job.start() + for job in jobs: job.join() + except KeyboardInterrupt: + logging.info("Arrêt immédiat demandé") + os._exit(0)