def handle_request(self, client, buffer): data = buffer.decode('utf-8') if not data.strip(): return LOG.debug('Got request: %s', data.strip()) request = json.loads(data) command, args, kwargs = request if command not in COMMANDS: LOG.warn('unknown command %r', command) return if args is None: args = tuple() if kwargs is None: kwargs = {} command = getattr(self.kernel_api, command) response = Future() self._channel.thread_send((response, command, args, kwargs)) result, error = response.result() response = json.dumps([result, error], ensure_ascii=False).strip() response_bytes = response.encode('utf-8') + b'\n' LOG.debug('Send response: %s', response) client.sendall(response_bytes)