From: paulfantom Date: Wed, 13 Jul 2016 21:11:50 +0000 (+0200) Subject: SocketService - one more try X-Git-Tag: v1.3.0~70^2~6 X-Git-Url: https://arthur.barton.de/gitweb/?a=commitdiff_plain;h=0f761a381f2228d38e8549ce5acb6e56630238f1;p=netdata.git SocketService - one more try --- diff --git a/python.d/python_modules/base.py b/python.d/python_modules/base.py index 2783ada9..803ec65c 100644 --- a/python.d/python_modules/base.py +++ b/python.d/python_modules/base.py @@ -488,12 +488,16 @@ class SocketService(SimpleService): sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) #sock.setsockopt(socket.SOL_SOCKET, socket.TCP_NODELAY, 1) #sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) - sock.settimeout(self.update_every) + #sock.settimeout(self.update_every) + sock.settimeout(0.5) sock.connect((self.host, self.port)) + sock.settimeout(0.5) # Just to be sure else: sock = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM) - sock.settimeout(self.update_every) + #sock.settimeout(self.update_every) + sock.settimeout(0.05) sock.connect(self.unix_socket) + sock.settimeout(0.05) # Just to be sure except Exception as e: self.error(str(e)) @@ -512,30 +516,23 @@ class SocketService(SimpleService): self.sock = None return None - #data = sock.recv(2) - # data = "" - # try: - # while True: - # #try: - # buf = sock.recv(1024, 0x40) # get 1024 bytes in NON-BLOCKING mode - # #except socket.error: - # # break - # - # if len(buf) == 0: - # break - # else: - # data += buf.decode() - # except Exception as e: - # self.error(str(e)) - # sock.close() - # return None + size = 2 try: - data = sock.recv(65535, 0x40).decode() + data = sock.recv(size).decode() except Exception as e: self.error(str(e)) sock.close() return None + while True: + # implement something like TCP Window Scaling + if size < 4096: + size *= 2 + buf = sock.recv(size) + data += buf.decode() + if len(buf) < size: + break + return data def _parse_config(self):