from ..Convention.Runtime.Config import * from ..Convention.Runtime.Architecture import Architecture from ..Convention.Runtime.GlobalConfig import ProjectConfig, ConsoleFrontColor Architecture.Register(ProjectConfig, ProjectConfig(), lambda: None) from ..CoreModules.flags import set_internal_verbose from .web import app from argparse import ArgumentParser from typing import * import sys try: import uvicorn except ImportError as ex: ImportingThrow(ex, "Internal", ["uvicorn"]) def main() -> int: config: ProjectConfig = Architecture.Get(ProjectConfig) parser = ArgumentParser() parser.add_argument("--host", type=str, default=config.FindItem("host", "0.0.0.0")) parser.add_argument("--port", type=int, default=config.FindItem("port", 8000)) parser.add_argument("--verbose", type=bool, default=config.FindItem("verbose", False)) args = parser.parse_args() config.SaveProperties() if "help" in args: parser.print_help() return 0 # region Verbose verbose = args.verbose set_internal_verbose(verbose) config.Log("Info", f"{ConsoleFrontColor.GREEN}Verbose: {verbose}{ConsoleFrontColor.RESET}") # endregion Verbose # region Server host = args.host port = args.port config.Log("Info", f"{ConsoleFrontColor.GREEN}Server: {host}:{port}{ConsoleFrontColor.RESET}") # endregion Server uvicorn.run(app, host=host, port=port, limit_concurrency=5, log_level="info") return 0 if __name__ == "__main__": sys.exit(main()) __all__ = ["main"]