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

Can specify root session directory to startup script, uses env variable internally

parent 6469d4b4
No related branches found
No related tags found
No related merge requests found
......@@ -38,9 +38,9 @@ class _Session(object):
log_format = '%(asctime)s - %(levelname)s - %(message)s'
def __init__(self, root: str = None):
self.models = {} # model_id : model object
self.paths = self.make_paths(root) # TODO: optionally set this in startup script
def __init__(self):
self.models = {} # model_id : model object
self.paths = self.make_paths()
self.accessors = OrderedDict()
self.logfile = self.paths['logs'] / f'session.log'
......@@ -188,16 +188,15 @@ class _Session(object):
return fp.name
@staticmethod
def make_paths(root: str = None) -> dict:
def make_paths() -> dict:
"""
Set paths where images, logs, etc. are located in this session
:param root: absolute path to top-level directory
Set paths where images, logs, etc. are located in this session; can set custom session root data directory
with SVLT_SESSION_ROOT environmental variable
:return: dictionary of session paths
"""
if root is None:
root_path = Path(defaults.root)
else:
root_path = Path(root)
root = os.environ.get('SVLT_SESSION_ROOT', defaults.root)
root_path = Path(root)
sid = _Session.create_session_id(root_path)
paths = {'root': root_path}
for pk in ['inbound_images', 'outbound_images', 'logs', 'tables']:
......
from pathlib import Path
root = Path.home() / 'model_server' / 'sessions'
root = Path.home() / 'svlt' / 'sessions'
subdirectories = {
'logs': 'logs',
......
from multiprocessing import Process
import os
from pathlib import Path
import requests
from requests.adapters import HTTPAdapter
from urllib3 import Retry
......@@ -6,7 +8,10 @@ import uvicorn
import webbrowser
def main(host, port, confpath, reload, debug) -> None:
def main(host, port, confpath, reload, debug, root) -> None:
if root:
os.environ['SVLT_SESSION_ROOT'] = root
server_process = Process(
target=uvicorn.run,
......@@ -27,8 +32,8 @@ def main(host, port, confpath, reload, debug) -> None:
try:
sesh = requests.Session()
retries = Retry(
total=5,
backoff_factor=0.1,
total=10,
backoff_factor=0.5,
)
sesh.mount('http://', HTTPAdapter(max_retries=retries))
resp = sesh.get(url)
......
import argparse
from model_server.conf.defaults import server_conf
from model_server.conf.defaults import root, server_conf
from model_server.conf.startup import main
def parse_args():
......@@ -22,6 +22,11 @@ def parse_args():
default=str(server_conf['port']),
help='bind socket to this port',
)
parser.add_argument(
'--root',
default=root.__str__(),
help='root directory of session data'
)
parser.add_argument(
'--debug',
action='store_true',
......@@ -32,6 +37,7 @@ def parse_args():
action='store_true',
help='automatically restart server when changes are noticed, for development purposes'
)
return parser.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