non-blocking `SocketService`
paulfantom committed
Jul 19, 2016 at 02:30 UTC
4db937399e926a888c08c2fae970851452403161
4 files changed
+12
-4
plugins.d/python.d.plugin
+3
-2
@@ -341,7 +341,7 @@ class PythonCharts(object):
341
if job.override_name is not None:
342
new_name = job.__module__ + '_' + job.override_name
343
if new_name in overridden:
344
- msg.error(job.chart_name + " already exists. Stopping '" + job.name + "'")
344
+ msg.error(job.override_name + " already exists. Stopping '" + job.name + "'")
345
self._stop(job)
346
i -= 1
347
else:
@@ -351,9 +351,10 @@ class PythonCharts(object):
351
overridden.append(job.chart_name)
352
except Exception:
353
pass
354
- except AttributeError:
354
+ except AttributeError as e:
355
self._stop(job)
356
msg.error(job.chart_name, "cannot find check() function.")
357
+ msg.debug(str(e))
358
except (UnboundLocalError, Exception) as e:
359
msg.error(job.chart_name, str(e))
360
self._stop(job)
python.d/python_modules/base.py
+3
-1
@@ -574,11 +574,13 @@ class SocketService(SimpleService):
574
buf = self._sock.recv(4096)
575
if len(buf) == 0 or buf is None:
576
break
577
+
578
data += buf.decode()
579
if self._check_raw_data(data):
580
break
581
else:
581
- # self._disconnect()
582
+ self.error("Socket timed out.")
583
+ self._disconnect()
584
break
585
586
return data
python.d/redis.chart.py
+1
@@ -67,6 +67,7 @@ class Service(SocketService):
67
self.order = ORDER
68
self.definitions = CHARTS
69
self._keep_alive = True
70
+ self.chart_name = ""
71
72
def _get_data(self):
73
"""
python.d/squid.chart.py
+5
-1
@@ -88,7 +88,11 @@ class Service(SocketService):
88
else:
89
self._keep_alive = False
90
91
- if "client" in data and "server.all" in data:
91
+ # if "client" in data and "server.all" in data:
92
+ # return True
93
+ # else:
94
+ # return False
95
+ if data[-7:] == "\r\n0\r\n\r\n":
96
return True
97
else:
98
return False