typestar

Descargas en streaming en Python

Descargar un archivo grande sin cargarlo entero en memoria.

import requests

with requests.get("https://example.com/big.csv",
                  stream=True, timeout=30) as respuesta:
    respuesta.raise_for_status()
    total = 0
    with open("big.csv", "wb") as salida:
        for trozo in respuesta.iter_content(chunk_size=8192):
            salida.write(trozo)
            total += len(trozo)

tipo = respuesta.headers.get("Content-Type")

Cómo funciona

  1. stream=True pospone la lectura del cuerpo.
  2. iter_content produce bloques de tamaño fijo.
  3. Cada bloque se escribe directo a disco.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
12
Caracteres a escribir
321
Tokens
81
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 46 segundos.

Escribe este fragmento

Paso 5 de 5 en requests; paso 5 de 9 en Web scraping.

← Anterior Siguiente →