-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrun-snet-service.py
56 lines (44 loc) · 1.77 KB
/
run-snet-service.py
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
import pathlib
import subprocess
import signal
import time
import sys
import argparse
def main():
parser = argparse.ArgumentParser(prog="run-snet-service")
parser.add_argument("--daemon-config-path-mainnet", help="Path to daemon configuration file for mainnet", required=True)
parser.add_argument("--daemon-config-path-ropsten", help="Path to daemon configuration file for ropsten",
required=True)
args = parser.parse_args(sys.argv[1:])
daemons = {'mainnet':args.daemon_config_path_mainnet, 'ropsten':args.daemon_config_path_ropsten}
snetd_p = []
def handle_signal(signum, frame):
for i,_ in enumerate(daemons.keys()):
snetd_p[i].send_signal(signum)
service_p.send_signal(signum)
for i,_ in enumerate(daemons.keys()):
snetd_p[i].wait()
service_p.wait()
exit(0)
signal.signal(signal.SIGTERM, handle_signal)
signal.signal(signal.SIGINT, handle_signal)
root_path = pathlib.Path(__file__).absolute().parent.parent
for daemon in daemons.keys():
snetd_p.append(start_snetd(root_path, daemons[daemon]))
service_p = start_service(root_path)
while True:
for i, daemon in enumerate(daemons.keys()):
if snetd_p[i].poll() is not None:
snetd_p[i] = start_snetd(root_path, daemons[daemon])
if service_p.poll() is not None:
service_p = start_service(root_path)
time.sleep(5)
def start_snetd(cwd, daemon_config_path=None):
cmd = ["./snetd-linux-amd64"]
if daemon_config_path is not None:
cmd.extend(["--config", daemon_config_path])
return subprocess.Popen(cmd)
def start_service(cwd):
return subprocess.Popen(["python3.6", "start_service.py"])
if __name__ == "__main__":
main()