-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path__init__.py
More file actions
72 lines (60 loc) · 2.18 KB
/
Copy path__init__.py
File metadata and controls
72 lines (60 loc) · 2.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import argparse
import logging
from urllib.parse import urlparse
import uvicorn
from rich.logging import RichHandler
import murfey
import murfey.client.update
from murfey.client.customlogging import CustomHandler
from murfey.util import LogFilter
from murfey.util.client import read_config
logger = logging.getLogger("murfey.instrument_server")
def run():
parser = argparse.ArgumentParser(description="Start the Murfey server")
parser.add_argument(
"--host",
help="Listen for incoming connections on a specific interface (IP address or hostname; default: all)",
default="0.0.0.0",
)
parser.add_argument(
"--port",
help="Listen for incoming TCP connections on this port (default: 8001)",
type=int,
default=8001,
)
args = parser.parse_args()
murfey_url = urlparse(read_config()["Murfey"].get("server"), allow_fragments=False)
try:
murfey.client.update.check(murfey_url)
except Exception as e:
print(f"Murfey update check failed with {e}")
LogFilter.install()
rich_handler = RichHandler(enable_link_path=False)
logging.getLogger("murfey").setLevel(logging.INFO)
logging.getLogger("murfey").addHandler(rich_handler)
logging.getLogger("fastapi").addHandler(rich_handler)
logging.getLogger("uvicorn").addHandler(rich_handler)
ws = murfey.client.websocket.WSApp(
server=read_config()["Murfey"].get("server"),
register_client=False,
)
handler = CustomHandler(ws.send)
logging.getLogger("murfey").addHandler(handler)
logging.getLogger("fastapi").addHandler(handler)
logging.getLogger("uvicorn").addHandler(handler)
logger.info(
f"Starting Murfey server version {murfey.__version__}, listening on {args.host}:{args.port}"
)
global _running_server
config = uvicorn.Config(
"murfey.instrument_server.main:app",
host=args.host,
port=args.port,
log_config=None,
ws_ping_interval=300,
ws_ping_timeout=300,
)
logger.info("Starting instrument server")
_running_server = uvicorn.Server(config=config)
_running_server.run()
logger.info("Instrument server shutting down")