import argparse from multiprocessing import Process import uvicorn def parse_args(): parser = argparse.ArgumentParser( description='Start model server with optional arguments', ) parser.add_argument( '--host', default='127.0.0.1', help='bind socket to this host' ) parser.add_argument( '--port', default='8000', help='bind socket to this port, default=8000', ) parser.add_argument( '--debug', action='store_true', help='display extra information that is helpful for debugging' ) return parser.parse_args() if __name__ == '__main__': args = parse_args() print('CLI args:\n' + str(args)) server_process = Process( target=uvicorn.run, args=('model_server.api:app',), kwargs={ 'app_dir': '.', 'host': args.host, 'port': int(args.port), 'log_level': 'debug', 'reload': False }, daemon=True, ) server_process.start() if args.debug: print('Running in debug mode') print('Type "STOP" to stop server') input_str = '' while input_str.upper() != 'STOP': input_str = input() print('Finished')