from watchdog.observers import Observer from watchdog.events import FileSystemEventHandler import subprocess import time import sys class AppReloader(FileSystemEventHandler): def __init__(self): self.process = None self.start_app() def start_app(self): if self.process: self.process.terminate() self.process.wait() print("\n--- Restarting app.py ---\n") self.process = subprocess.Popen([sys.executable, "app.py"]) def on_modified(self, event): if event.src_path.endswith('app.py'): self.start_app() if __name__ == "__main__": event_handler = AppReloader() observer = Observer() observer.schedule(event_handler, path='.', recursive=False) observer.start() try: while True: time.sleep(1) except KeyboardInterrupt: observer.stop() if event_handler.process: event_handler.process.terminate() observer.join()