@cryptotaxi247 / netdata-1 / commits / 0f761a381

SocketService - one more try

paulfantom committed Jul 13, 2016 at 23:11 UTC 0f761a381f2228d38e8549ce5acb6e56630238f1
1 file changed +17 -20
python.d/python_modules/base.py
+17 -20
@@ -488,12 +488,16 @@ class SocketService(SimpleService):
488 sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
489 #sock.setsockopt(socket.SOL_SOCKET, socket.TCP_NODELAY, 1)
490 #sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
491 - sock.settimeout(self.update_every)
491 + #sock.settimeout(self.update_every)
492 + sock.settimeout(0.5)
493 sock.connect((self.host, self.port))
494 + sock.settimeout(0.5) # Just to be sure
495 else:
496 sock = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
495 - sock.settimeout(self.update_every)
497 + #sock.settimeout(self.update_every)
498 + sock.settimeout(0.05)
499 sock.connect(self.unix_socket)
500 + sock.settimeout(0.05) # Just to be sure
501
502 except Exception as e:
503 self.error(str(e))
@@ -512,30 +516,23 @@ class SocketService(SimpleService):
516 self.sock = None
517 return None
518
515 - #data = sock.recv(2)
516 - # data = ""
517 - # try:
518 - # while True:
519 - # #try:
520 - # buf = sock.recv(1024, 0x40) # get 1024 bytes in NON-BLOCKING mode
521 - # #except socket.error:
522 - # # break
523 - #
524 - # if len(buf) == 0:
525 - # break
526 - # else:
527 - # data += buf.decode()
528 - # except Exception as e:
529 - # self.error(str(e))
530 - # sock.close()
531 - # return None
519 + size = 2
520 try:
533 - data = sock.recv(65535, 0x40).decode()
521 + data = sock.recv(size).decode()
522 except Exception as e:
523 self.error(str(e))
524 sock.close()
525 return None
526
527 + while True:
528 + # implement something like TCP Window Scaling
529 + if size < 4096:
530 + size *= 2
531 + buf = sock.recv(size)
532 + data += buf.decode()
533 + if len(buf) < size:
534 + break
535 +
536 return data
537
538 def _parse_config(self):