Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
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()
time.sleep(0.1)
update_file.touch()
assert reloader.should_restart()
reloader.restart()
reloader.shutdown()
finally:
os.chdir(working_dir)
def test_statreload():
"""
A basic sanity check.
Simply run the reloader against a no-op server, and signal for it to
quit immediately.
"""
config = Config(app=None, reload=True)
reloader = StatReload(config, target=run, sockets=[])
reloader.signal_handler(sig=signal.SIGINT, frame=None)
reloader.run()
def run(app, **kwargs):
config = Config(app, **kwargs)
server = Server(config=config)
if (config.reload or config.workers > 1) and not isinstance(app, str):
logger = logging.getLogger("uvicorn.error")
logger.warn(
"You must pass the application as an import string to enable 'reload' or 'workers'."
)
sys.exit(1)
if config.should_reload:
sock = config.bind_socket()
supervisor = StatReload(config, target=server.run, sockets=[sock])
supervisor.run()
elif config.workers > 1:
sock = config.bind_socket()
supervisor = Multiprocess(config, target=server.run, sockets=[sock])
supervisor.run()
else:
server.run()
if self.option("db_seed_env", False):
self.seed_from_env()
# taken from uvicorn/main.py:run
logger.debug("run@api_server.py - Building Uvicorn Config and Server")
config = UvicornConfig(app, log_config=self.get_uvicorn_logging(), **kwargs)
server = UvicornServer(config=config)
if self.option("force_exit"):
server.force_exit = True
if isinstance(app, str) and (config.debug or config.reload):
logger.warning(f"run@api_server.py - Running boucanpy api in dev mode...")
sock = config.bind_socket()
supervisor = StatReload(config)
return supervisor.run(server.run, sockets=[sock])
elif config.workers > 1:
sock = config.bind_socket()
supervisor = Multiprocess(config)
logger.warning(
f"run@api_server.py - Running boucanpy api in worker mode..."
)
return supervisor.run(server.run, sockets=[sock])
else:
sockets = None
logger.warning(
f"run@api_server.py - Running boucanpy api in standard mode..."
)
return await server.serve(sockets=sockets)