forked from kspaceKelvin/python-ismrmrd-server
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
executable file
·90 lines (73 loc) · 2.96 KB
/
main.py
File metadata and controls
executable file
·90 lines (73 loc) · 2.96 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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/usr/bin/python3
from server import Server
import argparse
import logging
import sys
import os
import signal
defaults = {
'host': '0.0.0.0',
'port': 9002,
'defaultConfig': 'invertcontrast',
'savedataFolder': '/tmp/share/saved_data'
}
def main(args):
# Create a multi-threaded dispatcher to handle incoming connections
server = Server(args.host, args.port, args.defaultConfig, args.savedata, args.savedataFolder, args.multiprocessing)
# Trap signal interrupts (e.g. ctrl+c, SIGTERM) and gracefully stop
def handle_signals(signum, frame):
print("Received signal interrupt -- stopping server")
server.socket.close()
sys.exit(0)
signal.signal(signal.SIGTERM, handle_signals)
signal.signal(signal.SIGINT, handle_signals)
# Start server
server.serve()
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Example server for MRD streaming format',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('-p', '--port', type=int, help='Port')
parser.add_argument('-H', '--host', type=str, help='Host')
parser.add_argument('-d', '--defaultConfig', type=str, help='Default (fallback) config module')
parser.add_argument('-v', '--verbose', action='store_true', help='Verbose output.')
parser.add_argument('-l', '--logfile', type=str, help='Path to log file')
parser.add_argument('-s', '--savedata', action='store_true', help='Save incoming data')
parser.add_argument('-S', '--savedataFolder', type=str, help='Folder to save incoming data')
parser.add_argument('-m', '--multiprocessing', action='store_true', help='Use multiprocessing')
parser.add_argument('-r', '--crlf', action='store_true', help='Use Windows (CRLF) line endings')
parser.set_defaults(**defaults)
args = parser.parse_args()
if args.crlf:
fmt='%(asctime)s - %(message)s\r'
else:
fmt='%(asctime)s - %(message)s'
if args.verbose:
logLevel = logging.DEBUG
else:
logLevel = logging.INFO
if args.logfile:
print("Logging to file:", args.logfile)
# Get full path to the log file
absLogPath = os.path.abspath(args.logfile)
if not os.path.exists(os.path.dirname(absLogPath)):
os.makedirs(os.path.dirname(absLogPath))
logging.basicConfig(
format=fmt,
level=logLevel,
handlers=[
logging.FileHandler(args.logfile),
logging.StreamHandler(sys.stdout)
],
force=True
)
else:
print("No logfile provided")
logging.basicConfig(
format=fmt,
level=logLevel,
handlers=[
logging.StreamHandler(sys.stdout)
],
force=True
)
main(args)