def send_zabbix_request(self, data_json): HEADER = "ZBXD\1" data_json_str = json.dumps(data_json) logger.debug("Zabbix Request ----- " + data_json_str) data_len= len(data_json_str) data_header = struct.pack('<Q', data_len) zabbix_req = HEADER.encode() + data_header + data_json_str.encode() try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect ((self.zabbix_host, self.zabbix_port)) sock.send(zabbix_req) except Exception as err: logger.critical("Error connecting to Zabbix Server -- {0}" .format( err)) return json_err("Error connecting to Zabbix Server {0}" .format( err)) else: response_header = sock.recv(5).decode() if not response_header == 'ZBXD\1': logger.critical('Got invalid responsei from Zabbix') return json_err('Got invalid responsei from Zabbix') response_data_header = sock.recv(8) response_len = struct.unpack('<Q', response_data_header)[0] response_raw = sock.recv(response_len) sock.close() return json.loads(response_raw.decode())