code: async def download_fileobj(self, Bucket, Key, Fileobj, ExtraArgs=None, Callback=None, Config=None):
      
  
      try:
          resp = await self.get_object(Bucket=Bucket, Key=Key)
      except ClientError as err:
          if err.response['Error']['Code'] == 'NoSuchKey':
              # Convert to 404 so it looks the same when boto3.download_file fails
              raise ClientError({'Error': {'Code': '404', 'Message': 'Not Found'}}, 'HeadObject')
          raise
  
      body = resp['Body']
  
      while True:
          data = await body.read(4096)
  
          if data == b'':
              break
  
          if Callback:
              try:
                  Callback(len(data))
              except:  # noqa: E722
                  pass
  
          Fileobj.write(data)
          await asyncio.sleep(0.0)
docs: Download an object from S3 to a file-like object.
  
      The file-like object must be in binary mode.
  
      This is a managed transfer which will perform a multipart download in
      multiple threads if necessary.
  
      Usage::
  
          import boto3
          s3 = boto3.client('s3')
  
          with open('filename', 'wb') as data:
              s3.download_fileobj('mybucket', 'mykey', data)
  
      :type Fileobj: a file-like object
      :param Fileobj: A file-like object to download into. At a minimum, it must
          implement the `write` method and must accept bytes.
  
      :type Bucket: str
      :param Bucket: The name of the bucket to download from.
  
      :type Key: str
      :param Key: The name of the key to download from.
  
      :type ExtraArgs: dict
      :param ExtraArgs: Extra arguments that may be passed to the
          client operation.
  
      :type Callback: method
      :param Callback: A method which takes a number of bytes transferred to
          be periodically called during the download.
  
      :type Config: boto3.s3.transfer.TransferConfig
      :param Config: The transfer configuration to be used when performing the
          download.