class Reloader(object): @save_args def __init__(self, get_app, watch, skip=SKIP, exclude='*.pyc'): self.app = self.get_app() self.watcher = FileWatcher(watch, exclude=exclude) def __call__(self, environ, start_response): if self.watcher.changed(): del self.app for i in set(sys.modules.keys()).difference(self.skip): del sys.modules[i] self.app = self.get_app() return self.app(environ, start_response)