code: def download(self,
                   task,
                   default_ext,
                   timeout=5,
                   max_retry=3,
                   overwrite=False,
                   **kwargs):
          
          file_url = task['file_url']
          task['success'] = False
          task['filename'] = None
          retry = max_retry
  
          if not overwrite:
              with self.lock:
                  self.fetched_num += 1
                  filename = self.get_filename(task, default_ext)
                  if self.storage.exists(filename):
                      self.logger.info('skip downloading file %s', filename)
                      return
                  self.fetched_num -= 1
  
          while retry > 0 and not self.signal.get('reach_max_num'):
              try:
                  response = self.session.get(file_url, timeout=timeout)
              except Exception as e:
                  self.logger.error('Exception caught when downloading file %s, '
                                    'error: %s, remaining retry times: %d',
                                    file_url, e, retry - 1)
              else:
                  if self.reach_max_num():
                      self.signal.set(reach_max_num=True)
                      break
                  elif response.status_code != 200:
                      self.logger.error('Response status code %d, file %s',
                                        response.status_code, file_url)
                      break
                  elif not self.keep_file(task, response, **kwargs):
                      break
                  with self.lock:
                      self.fetched_num += 1
                      filename = self.get_filename(task, default_ext)
                  self.logger.info('image #%s\t%s', self.fetched_num, file_url)
                  self.storage.write(filename, response.content)
                  task['success'] = True
                  task['filename'] = filename
                  break
              finally:
                  retry -= 1
docs: Download the image and save it to the corresponding path.
  
          Args:
              task (dict): The task dict got from ``task_queue``.
              timeout (int): Timeout of making requests for downloading images.
              max_retry (int): the max retry times if the request fails.
              **kwargs: reserved arguments for overriding.