diff --git a/pylokid/__init__.py b/pylokid/__init__.py index b68dbf1..a5c817b 100644 --- a/pylokid/__init__.py +++ b/pylokid/__init__.py @@ -2,6 +2,6 @@ Pylokid. From Mail to Lodur - all automated. """ -__version__ = "3.0.2" +__version__ = "3.0.3" __git_version__ = "0" __url__ = "https://github.com/tobru/pylokid" diff --git a/pylokid/__main__.py b/pylokid/__main__.py index 614cdc6..f215c72 100644 --- a/pylokid/__main__.py +++ b/pylokid/__main__.py @@ -4,7 +4,4 @@ Helper module to run not-installed version (via ``python3 -m pylokid``) from pylokid.main import main if __name__ == "__main__": - try: - main() - except KeyboardInterrupt: - print("Byebye") + main() diff --git a/pylokid/main.py b/pylokid/main.py index 93ba628..f1bf62f 100644 --- a/pylokid/main.py +++ b/pylokid/main.py @@ -5,6 +5,7 @@ import logging import os import time +import signal import requests from importlib.metadata import version @@ -37,6 +38,20 @@ PUSHOVER_API_TOKEN = os.getenv("PUSHOVER_API_TOKEN") PUSHOVER_USER_KEY = os.getenv("PUSHOVER_USER_KEY") +class GracefulKiller: + kill_now = False + signals = {signal.SIGINT: "SIGINT", signal.SIGTERM: "SIGTERM"} + + def __init__(self, logger): + signal.signal(signal.SIGINT, self.exit_gracefully) + signal.signal(signal.SIGTERM, self.exit_gracefully) + self.logger = logger + + def exit_gracefully(self, signum, frame): + self.logger.info("Received signal %s", self.signals[signum]) + self.kill_now = True + + def main(): """ main """ @@ -48,6 +63,8 @@ def main(): logger = logging.getLogger("pylokid") logger.info("Starting pylokid version %s", version("pylokid")) + killer = GracefulKiller(logger) + # Initialize IMAP Session imap_client = EmailHandling( IMAP_SERVER, @@ -244,6 +261,11 @@ def main(): # send heartbeat requests.get(HEARTBEAT_URL) - # repeat every - logger.info("Waiting %s seconds until next check", IMAP_CHECK_INTERVAL) - time.sleep(int(IMAP_CHECK_INTERVAL)) + + while not killer.kill_now: + # repeat every + logger.info("Waiting %s seconds until next check", IMAP_CHECK_INTERVAL) + time.sleep(int(IMAP_CHECK_INTERVAL)) + + logger.info("Pylokid waves bye bye") + exit() diff --git a/pyproject.toml b/pyproject.toml index 7ca879b..a2f1ed8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "pylokid" -version = "3.0.2" +version = "3.0.3" description = "" authors = ["Tobias Brunner "] license = "MIT"