fix SocketService
paulfantom committed
Jul 13, 2016 at 16:28 UTC
feeeceda51681f58be2bb4e2962f5534f92d91a7
2 files changed
+16
-38
python.d/python_modules/base.py
+10
-9
@@ -150,10 +150,10 @@ class BaseService(threading.Thread):
150
else:
151
time.sleep(self.timetable['freq'])
152
153
- def _format(self, *input):
153
+ def _format(self, *args):
154
params = []
155
append = params.append
156
- for p in input:
156
+ for p in args:
157
if p is None:
158
append(p)
159
continue
@@ -515,14 +515,15 @@ class SocketService(SimpleService):
515
data = sock.recv(2)
516
try:
517
while True:
518
- buf = sock.recv(1024)
519
-# if not buf:
520
-# break
521
-# else:
522
-# data += buf
523
- data += buf
524
- if len(buf) < 1024:
518
+ try:
519
+ buf = sock.recv(1024, 0x40) # get 1024 bytes in NON-BLOCKING mode
520
+ except socket.error:
521
+ break
522
+
523
+ if len(buf) == 0:
524
break
525
+ else:
526
+ data += buf
527
except:
528
sock.close()
529
return None
python.d/squid.chart.py
+6
-29
@@ -65,7 +65,7 @@ class Service(SocketService):
65
if row.startswith(("client", "server.all")):
66
tmp = row.split("=")
67
data[tmp[0].replace('.', '_').strip(' ')] = int(tmp[1])
68
- except (ValueError, AttributeError):
68
+ except (ValueError, AttributeError, TypeError):
69
return None
70
71
if len(data) == 0:
@@ -86,31 +86,8 @@ class Service(SocketService):
86
if not req.endswith(" HTTP/1.0\r\n\r\n"):
87
req += " HTTP/1.0\r\n\r\n"
88
self.request = req.encode()
89
- #
90
- # # autodetect squid
91
- # if type(self.port) is tuple:
92
- # ports = self.port
93
- # for port in ports:
94
- # self.port = port
95
- # urls = ["cache_object://" + self.host + ":" + str(port) + "/counters",
96
- # "/squid-internal-mgr/counters"]
97
- # for url in urls:
98
- # tmp = "GET " + url + " HTTP/1.0\r\n\r\n"
99
- # self.request = tmp.encode()
100
- # if self._get_data() is not None:
101
- # return True
102
- # else:
103
- if True:
104
- if self._get_data() is not None:
105
- return True
106
- else:
107
- self.error("No data returned")
108
- return False
109
-
110
-
111
-
112
-
113
-
114
-
115
-
116
-
89
+ if self._get_data() is not None:
90
+ return True
91
+ else:
92
+ self.error("No data returned")
93
+ return False