Index: reloader.py =================================================================== --- reloader.py (revision 8093) +++ reloader.py (working copy) @@ -56,11 +56,29 @@ ``raise_keyboard_interrupt`` option creates a unignorable signal which causes the whole application to shut-down (rudely). """ - mon = Monitor(poll_interval=poll_interval) - t = threading.Thread(target=mon.periodic_reload) - t.setDaemon(True) - t.start() + try: + import pyinotify + class HandleEvents(pyinotify.ProcessEvent): + def process_IN_MODIFY(self, event): + filename = event.pathname + if filename.endswith('.py') or filename.endswith('.ini'): + print >> sys.stderr, ( + "%s changed; reloading..." % filename) + os._exit(3) + + wm = pyinotify.WatchManager() + notifier = pyinotify.ThreadedNotifier(wm, HandleEvents()) + notifier.start() + wdd = wm.add_watch(os.getcwd(), pyinotify.IN_MODIFY, rec=True) + print "Using inotify to monitor file changes" + + except ImportError: + mon = Monitor(poll_interval=poll_interval) + t = threading.Thread(target=mon.periodic_reload) + t.setDaemon(True) + t.start() + class Monitor(object): instances = []