Files
profilarr/backend/run_dev.py
2025-02-05 16:09:58 +10:30

50 lines
1.3 KiB
Python

import sys
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import subprocess
import os
class Reloader(FileSystemEventHandler):
def __init__(self):
self.process = None
self.last_restart = 0
self.start_app()
def on_any_event(self, event):
if event.src_path.endswith(
'.py') and not event.src_path.endswith('run_dev.py'):
current_time = time.time()
if current_time - self.last_restart > 1: # Prevent rapid restarts
print(f"Detected change in {event.src_path}, restarting...")
self.restart_app()
self.last_restart = current_time
def start_app(self):
env = os.environ.copy()
env['FLASK_ENV'] = 'development'
self.process = subprocess.Popen([sys.executable, 'run.py'], env=env)
def restart_app(self):
if self.process:
self.process.terminate()
self.process.wait()
self.start_app()
if __name__ == "__main__":
path = '.'
event_handler = Reloader()
observer = Observer()
observer.schedule(event_handler, path, recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()