-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHTTPServerSimpleJsonGrafana.py
More file actions
123 lines (98 loc) · 3.3 KB
/
Copy pathHTTPServerSimpleJsonGrafana.py
File metadata and controls
123 lines (98 loc) · 3.3 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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
from cgitb import handler
from http.server import HTTPServer
from httpgethandler import HttpGetHandler
from jsonreader import JsonReader
from mediator import BaseComponent
from mediator import ConcreteMediator
from mediator import Mediator
from jprocessor import JsonDataProcessor
import threading
import time
import signal
from requests import delete
import sys
import getopt
class MainWorker(BaseComponent):
def __init__(self, jreader: JsonReader, jprocessor: JsonDataProcessor, mediator: Mediator = None) -> None:
self.json_reader = jreader
self.json_processor = jprocessor
self._mediator = mediator
def primaryJob(self):
threading.Thread(target=self.httpd.serve_forever).start()
threading.Thread(target=self.json_reader.readFiles).start()
while self.isActive:
# print("Do JOB")
if self.json_reader.isActive == False:
self.isActive = False
break
time.sleep(1)
self.httpd.shutdown()
self.json_reader.shutdouwn()
print("Bye")
def runHttpdServer(self):
try:
self.httpd.serve_forever()
except KeyboardInterrupt:
self.httpd.shutdown()
def interrupt(self, sig, frame):
print('You pressed Ctrl+C!')
self.isActive = False
self.httpd.server_address
isActive = True
httpd = HTTPServer
json_reader = JsonReader
json_processor = JsonDataProcessor
mediator = ConcreteMediator
def run(worker: MainWorker):
signal.signal(signal.SIGINT, worker.interrupt)
worker.primaryJob()
def main(argv):
helpStr = 'Usage: HTTPServerSimpleJsonGrafana.py -d <inputfiles_dir> --ip=127.0.0.1 --port=3003 --extension=.json --max_records_count=1000 --read_interval=1.0'
json_reader = JsonReader()
json_processor = JsonDataProcessor()
worker = MainWorker(json_reader, json_processor)
try:
opts, args = getopt.getopt(
argv, "hd:i:p:e:c:r:", ["idir=", "ip=", "port=", "extension=", "max_records_count=", "read_interval="])
except:
sys.exit(2)
if len(opts) == 0:
print(helpStr)
sys.exit(0)
path = ''
ip = '127.0.0.1'
port = 3003
fileExt: str = '.json'
maxRecordsCount: int = 0
readInterval: float = 1
for opt, arg in opts:
if opt == '-h':
print(helpStr)
sys.exit()
elif opt in ("-d", "--idir"):
path = arg
elif opt in ("-i", "--ip"):
ip = arg
elif opt in ("-p", "--port"):
port = int(arg)
elif opt in ("-e", "--extension"):
fileExt = str(arg)
elif opt in ("-c", "--max_records_count"):
maxRecordsCount = int(arg)
elif opt in ("-r", "--read_interval"):
readInterval = float(arg)
worker.json_reader.setScanPath(path)
worker.json_reader.setFileExt(fileExt)
worker.json_reader.SetDataRecordsMaxCount(maxRecordsCount)
worker.json_reader.SetScanInterval(readInterval)
handler = HttpGetHandler
try:
httpd = HTTPServer((ip, port), handler)
except OSError as e:
print(e.args)
exit()
worker.mediator = ConcreteMediator(handler, json_reader, json_processor)
worker.httpd = httpd
run(worker)
if __name__ == "__main__":
main(sys.argv[1:])