mash-server/src/config/hotreloader.py

35 lines
1 KiB
Python
Raw Normal View History

2022-10-28 09:30:40 +02:00
import logging
try:
from watchdog.observers import Observer
from watchdog.events import (
FileSystemEventHandler,
FileCreatedEvent,
FileModifiedEvent,
)
2022-11-04 09:19:18 +01:00
class HotReloader(FileSystemEventHandler):
"""Might be unbound, if watchdog is not installed. Check if equal to None before use."""
2022-10-28 09:30:40 +02:00
2022-11-04 09:19:18 +01:00
def __init__(self, path):
self.path = path
self.observer = Observer()
self.observer.schedule(self, path, recursive=True)
self.observer.start()
2022-10-28 09:30:40 +02:00
2022-11-04 09:19:18 +01:00
def __del__(self):
self.observer.stop()
self.observer.join()
2022-11-04 09:03:53 +01:00
2022-11-04 09:19:18 +01:00
def on_modified(self, event: FileModifiedEvent):
logging.info("Config file modified. Triggering hot reload.")
2022-10-28 09:30:40 +02:00
2022-11-04 09:19:18 +01:00
def on_created(self, event: FileCreatedEvent):
logging.info("New config file created. Triggering hot reload.")
2022-11-04 09:03:53 +01:00
2022-11-04 09:19:18 +01:00
logging.debug("Watchdog imported successfully. Hot reloading available.")
2022-10-28 09:30:40 +02:00
2022-11-04 09:19:18 +01:00
except ImportError:
logging.info("Watchdog is not installed. Hot reloading unavailable.")