def test_should_reload(tmpdir): update_file = Path(os.path.join(str(tmpdir), "example.py")) update_file.touch() working_dir = os.getcwd() os.chdir(str(tmpdir)) try: config = Config(app=None, reload=True) reloader = StatReload(config, target=run, sockets=[]) reloader.signal_handler(sig=signal.SIGINT, frame=None) reloader.startup() assert not reloader.should_restart() update_file.touch() assert reloader.should_restart() reloader.restart() reloader.shutdown() finally: os.chdir(working_dir)
def main(): import blockexp directory = os.path.dirname(os.path.dirname(__file__)) reloader = StatReload(Config( app=None, debug=True, reload_dirs=[directory], )) logger: Logger = reloader.config.logger_instance while True: uvicorn.run( f"{__name__}:app", host='0.0.0.0', port=8000, debug=True and RELOAD, reload=RELOAD, reload_dirs=[directory], ) if not RELOAD: break logger.error("FAILURE RELOAD") while True: time.sleep(0.3) if reloader.should_restart(): reloader.clear() # noinspection PyBroadException try: reload(blockexp) init_app(debug=True) except Exception: traceback.print_exc() logger.error("FAILURE RELOAD") else: break