Пример #1
0
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)
Пример #2
0
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