Skip to content
Snippets Groups Projects
Commit 6469d4b4 authored by Christopher Randolph Rhodes's avatar Christopher Randolph Rhodes
Browse files

Main startup server code is now in package, script only handles argument parsing

parent 9dfbc6ae
No related branches found
No related tags found
No related merge requests found
from multiprocessing import Process
import requests
from requests.adapters import HTTPAdapter
from urllib3 import Retry
import uvicorn
import webbrowser
def main(host, port, confpath, reload, debug) -> None:
server_process = Process(
target=uvicorn.run,
args=(f'{confpath}:app',),
kwargs={
'app_dir': '..',
'host': host,
'port': int(port),
'log_level': 'debug',
'reload': reload,
},
daemon=(reload is False),
)
url = f'http://{host}:{int(port):04d}/status'
print(url)
server_process.start()
try:
sesh = requests.Session()
retries = Retry(
total=5,
backoff_factor=0.1,
)
sesh.mount('http://', HTTPAdapter(max_retries=retries))
resp = sesh.get(url)
assert resp.status_code == 200
except Exception:
print('Error starting server')
server_process.terminate()
exit()
webbrowser.open(url, new=1, autoraise=True)
if debug:
print('Running in debug mode')
print('Type "STOP" to stop server')
input_str = ''
while input_str.upper() != 'STOP':
input_str = input()
server_process.terminate()
import argparse
from multiprocessing import Process
from pathlib import Path
import requests
from requests.adapters import HTTPAdapter
from urllib3 import Retry
import uvicorn
import webbrowser
from model_server.conf.defaults import server_conf
from model_server.conf.startup import main
def parse_args():
parser = argparse.ArgumentParser(
......@@ -42,52 +35,9 @@ def parse_args():
return parser.parse_args()
# TODO: move server logic into package
def main(args) -> None:
if __name__ == '__main__':
args = parse_args()
print('CLI args:\n' + str(args))
server_process = Process(
target=uvicorn.run,
args=(f'{args.confpath}:app',),
kwargs={
'app_dir': '..',
'host': args.host,
'port': int(args.port),
'log_level': 'debug',
'reload': args.reload,
},
daemon=(args.reload is False),
)
url = f'http://{args.host}:{int(args.port):04d}/status'
print(url)
server_process.start()
try:
sesh = requests.Session()
retries = Retry(
total=5,
backoff_factor=0.1,
)
sesh.mount('http://', HTTPAdapter(max_retries=retries))
resp = sesh.get(url)
assert resp.status_code == 200
except Exception:
print('Error starting server')
server_process.terminate()
exit()
webbrowser.open(url, new=1, autoraise=True)
if args.debug:
print('Running in debug mode')
print('Type "STOP" to stop server')
input_str = ''
while input_str.upper() != 'STOP':
input_str = input()
server_process.terminate()
main(**args.__dict__)
print('Finished')
if __name__ == '__main__':
main(parse_args())
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment