Fix production mode server
This commit is contained in:
parent
394d4465b0
commit
73cbc950bc
1 changed files with 39 additions and 39 deletions
|
|
@ -65,52 +65,52 @@ def main() -> None:
|
||||||
|
|
||||||
logger.info(f"Starting uvicorn server with app={app}")
|
logger.info(f"Starting uvicorn server with app={app}")
|
||||||
|
|
||||||
uvicorn.run(app, **common_config) # this will never return
|
uvicorn.run(app, **common_config)
|
||||||
|
else:
|
||||||
|
class EventHandler(PatternMatchingEventHandler):
|
||||||
|
def __init__(self) -> None:
|
||||||
|
super().__init__(patterns=["*.py", "*.ipynb"], ignore_patterns=["__*.py"])
|
||||||
|
self.server: Optional[GreatAIReload] = None
|
||||||
|
self.restart()
|
||||||
|
|
||||||
class EventHandler(PatternMatchingEventHandler):
|
def on_closed(self, event: FileSystemEvent) -> None:
|
||||||
def __init__(self) -> None:
|
logger.warning(f"File {event.src_path} has triggered a restart")
|
||||||
super().__init__(patterns=["*.py", "*.ipynb"], ignore_patterns=["__*.py"])
|
self.restart()
|
||||||
self.server: Optional[GreatAIReload] = None
|
|
||||||
self.restart()
|
|
||||||
|
|
||||||
def on_closed(self, event: FileSystemEvent) -> None:
|
def restart(self) -> None:
|
||||||
logger.warning(f"File {event.src_path} has triggered a restart")
|
file_name = get_script_name(args.file_name)
|
||||||
self.restart()
|
app = find_app(file_name)
|
||||||
|
if app is None:
|
||||||
|
logger.warning("Auto-reloading skipped")
|
||||||
|
return
|
||||||
|
|
||||||
def restart(self) -> None:
|
self.stop_server()
|
||||||
file_name = get_script_name(args.file_name)
|
|
||||||
app = find_app(file_name)
|
|
||||||
if app is None:
|
|
||||||
logger.warning("Auto-reloading skipped")
|
|
||||||
return
|
|
||||||
|
|
||||||
self.stop_server()
|
config = Config(app, **common_config)
|
||||||
|
socket = config.bind_socket()
|
||||||
|
self.server = GreatAIReload(
|
||||||
|
config, target=uvicorn.Server(config=config).run, sockets=[socket]
|
||||||
|
)
|
||||||
|
self.server.startup()
|
||||||
|
|
||||||
config = Config(app, **common_config)
|
def stop_server(self) -> None:
|
||||||
socket = config.bind_socket()
|
if self.server:
|
||||||
self.server = GreatAIReload(
|
self.server.shutdown()
|
||||||
config, target=uvicorn.Server(config=config).run, sockets=[socket]
|
|
||||||
)
|
|
||||||
self.server.startup()
|
|
||||||
|
|
||||||
def stop_server(self) -> None:
|
restart_handler = EventHandler()
|
||||||
if self.server:
|
observer = Observer()
|
||||||
self.server.shutdown()
|
observer.schedule(restart_handler, path=".", recursive=True)
|
||||||
|
observer.start()
|
||||||
|
|
||||||
restart_handler = EventHandler()
|
try:
|
||||||
observer = Observer()
|
while True:
|
||||||
observer.schedule(restart_handler, path=".", recursive=True)
|
time.sleep(50)
|
||||||
observer.start()
|
finally:
|
||||||
|
observer.stop()
|
||||||
try:
|
restart_handler.stop_server()
|
||||||
while True:
|
if args.file_name.endswith(".ipynb"):
|
||||||
time.sleep(50)
|
Path(get_script_name_of_notebook(args.file_name)).unlink(missing_ok=True)
|
||||||
finally:
|
observer.join()
|
||||||
observer.stop()
|
|
||||||
restart_handler.stop_server()
|
|
||||||
if args.file_name.endswith(".ipynb"):
|
|
||||||
Path(get_script_name_of_notebook(args.file_name)).unlink(missing_ok=True)
|
|
||||||
observer.join()
|
|
||||||
|
|
||||||
|
|
||||||
def get_script_name(file_name_argument: str) -> str:
|
def get_script_name(file_name_argument: str) -> str:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue