-
Notifications
You must be signed in to change notification settings - Fork 0
/
syncmon.py
85 lines (52 loc) · 2.2 KB
/
syncmon.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
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
#!/usr/bin/env python3
# coding: UTF-8
import datetime
import settings
import argparse
import pathlib
import logging
import signal
import time
import sys
from slickrpc import Proxy
from slickrpc import exc
proxy = Proxy('http://%s:%s@%s' % (settings.rpc_user, settings.rpc_pass, settings.rpc_address))
################################################################################
## SyncMonApp class ############################################################
################################################################################
class SyncMonApp:
def __init__(self):
pass
############################################################################
def run(self):
while True:
info = proxy.getinfo()
csv = "%d,%d,%d" % (info['connections'], info['headers'], info['blocks'])
logging.info(csv)
time.sleep(60)
################################################################################
def terminate(signalNumber, frame):
sys.exit()
################################################################################
### Main program ###############################################################
################################################################################
def main():
if sys.version_info[0] < 3:
raise 'Use Python 3'
pathlib.Path(settings.coin_symbol).mkdir(parents=True, exist_ok=True)
logging.basicConfig(filename = settings.coin_symbol + '/{:%Y-%m-%d}.csv'.format(datetime.datetime.now()),
filemode = 'w',
level = logging.INFO,
format = '%(asctime)s,%(message)s',
datefmt = '%d/%m/%Y %H:%M:%S')
signal.signal(signal.SIGINT, terminate) # keyboard interrupt ^C
signal.signal(signal.SIGTERM, terminate) # kill [default -15]
argparser = argparse.ArgumentParser(description='Simple blockchain sync monitor')
command_line_args = argparser.parse_args()
#logging.info('Arguments %s', vars(command_line_args))
app = SyncMonApp()
app.run()
################################################################################
if __name__ == '__main__':
main()
################################################################################