Files
PWF/Application/app.py

58 lines
1.5 KiB
Python

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"]