-
Notifications
You must be signed in to change notification settings - Fork 0
/
http_server.py
76 lines (57 loc) · 2.2 KB
/
http_server.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
#!/usr/bin/env python
from http.server import BaseHTTPRequestHandler, HTTPServer
from http import HTTPStatus
from global_var import server_list
import threading
import Ice
Ice.loadSlice('servoStatus.ice')
import service
class RequestThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
print("开始线程:" + self.name)
run()
print("退出线程:" + self.name)
# HTTPRequestHandler class
class HTTPServerRequestHandler(BaseHTTPRequestHandler):
# GET
def do_GET(self):
self.handle_http_request()
def do_POST(self):
self.handle_http_request()
def handle_http_request(self):
try:
self.send_response(HTTPStatus.OK)
self.send_header("Content-type", "text/html; charset=utf-8")
self.end_headers()
str_value = "<html><body><title>Servers</title><h2>服务器列表:</h2><ul>"
for k, v in server_list.items():
t_value = "{"
if isinstance(v, service.ServerReportProfile):
ser = v.__dict__
for k_x, x in ser.items():
"""
status是枚举,如果有必要的话对每个类型中文化
"""
if str(k_x) == "status":
pass
t_value += str(k_x) + ":\'" + str(x) + "\' "
else:
t_value += str(v)
t_value += "}"
str_value += "<li><span style='color:green'>{0} </span> : {1} </li>".format(k, t_value)
str_value += "</ul></body></html>"
self.wfile.write(bytes(str_value, 'utf-8'))
self.wfile.flush()
# self.finish()
except IOError:
self.send_error(404, 'File Not Found: %s' % self.path)
def run():
port = 10401
print('starting http, port', port)
# Server settings
server_address = ('', port)
httpd = HTTPServer(server_address, HTTPServerRequestHandler)
print('running http...')
httpd.serve_forever()