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
stream=Truepospone la lectura del cuerpo.iter_contentproduce bloques de tamaño fijo.- Cada bloque se escribe directo a disco.
Palabras clave y builtins usados aquí
asforlenopenwith
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.
Paso 5 de 5 en requests; paso 5 de 9 en Web scraping.