es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Descargar archivos grandes y transmitirlos en streaming a S3?

Necesito descargar archivos grandes y escribirlos en S3. En lugar de descargar los archivos al disco duro local y copiarlos a S3, ¿es posible transmitir los archivos directamente a S3?

Encontré el siguiente código en https://www.python-httpx.org/advanced/. ¿Cómo escribir el fragmento en S3?

import tempfile

import httpx
from tqdm import tqdm

with tempfile.NamedTemporaryFile() as download_file:
url = “https://speed.hetzner.de/100MB.bin”
with httpx.stream(“GET”, url) as response:
total = int(response.headers[“Content-Length”])

    with tqdm(total=total, unit_scale=True, unit_divisor=1024, unit="B") as progress:
        num_bytes_downloaded = response.num_bytes_downloaded
        for chunk in response.iter_bytes():
            download_file.write(chunk)
            progress.update(response.num_bytes_downloaded - num_bytes_downloaded)
            num_bytes_downloaded = response.num_bytes_downloaded
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible transmitir los archivos directamente a S3. Para hacer esto, puedes usar la biblioteca boto3 para interactuar con el servicio de S3 de AWS.

    El siguiente fragmento de código muestra cómo escribir el fragmento en S3:

    import boto3
    
    s3 = boto3.client('s3')
    
    s3.put_object(Bucket='mi-bucket', Key='mi-llave', Body=chunk)
    

Comments are closed.