| 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() |