def _send_to_server(self, file_paths, image_processed_callback, retry_n): """ Load images and compute cache keys and send requests to an http2 server for valid ones. """ cache_keys = [] http_streams = [] for file_path in file_paths: if self.cancelled: raise EmbeddingCancelledException() image = self._load_image_or_none(file_path) if not image: # skip the sending because image was skipped at loading http_streams.append(None) cache_keys.append(None) continue cache_key = md5_hash(image) cache_keys.append(cache_key) if cache_key in self._cache_dict: # skip the sending because image is present in the # local cache http_streams.append(None) continue try: headers = { 'Content-Type': 'image/jpeg', 'Content-Length': str(len(image)) } stream_id = self._send_request( method='POST', url='/image/' + self._model + '?machine={}&session={}&retry={}' .format(self.machine_id, self.session_id, retry_n), headers=headers, body_bytes=image ) http_streams.append(stream_id) except (ConnectionError, BrokenPipeError): self.persist_cache() raise # wait for the responses in a blocking manner return self._get_responses_from_server( http_streams, cache_keys, image_processed_callback )
def _send_to_server(self, file_paths, image_processed_callback): """ Load images and compute cache keys and send requests to an http2 server for valid ones. """ cache_keys = [] http_streams = [] for file_path in file_paths: image = self._load_image_or_none(file_path) if not image: # skip the sending because image was skipped at loading http_streams.append(None) cache_keys.append(None) continue cache_key = md5_hash(image) cache_keys.append(cache_key) if cache_key in self._cache_dict: # skip the sending because image is present in the # local cache http_streams.append(None) continue try: headers = { 'Content-Type': 'image/jpeg', 'Content-Length': str(len(image)) } stream_id = self._send_request( method='POST', url='/image/' + self._model, headers=headers, body_bytes=image ) http_streams.append(stream_id) except ConnectionError: self.persist_cache() raise # wait for the responses in a blocking manner return self._get_responses_from_server( http_streams, cache_keys, image_processed_callback )