Python + Transloadit
Sube y procesa un archivo local con pytransloadit, el cliente de Python mantenido para la REST API de Transloadit.
Receta ejecutable
Crea la integración
El script lee una ruta de archivo desde la línea de comandos, sube el archivo, redimensiona la imagen, espera a que termine e imprime el ID de la Assembly.
- Crea un entorno virtual e instala pytransloadit.
- Define TRANSLOADIT_KEY y TRANSLOADIT_SECRET en el entorno del proceso.
- Ejecuta python process_image.py path/to/photo.jpg.
Instalar
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade 'pytransloadit>=2,<3'process_image.py
import os
import sys
from transloadit import client
transloadit = client.Transloadit(
os.environ['TRANSLOADIT_KEY'],
os.environ['TRANSLOADIT_SECRET'],
)
assembly = transloadit.new_assembly()
with open(sys.argv[1], 'rb') as input_file:
assembly.add_file(input_file)
assembly.add_step('resize', '/image/resize', {
'width': 1200,
'height': 1200,
'resize_strategy': 'fit',
})
response = assembly.create(retries=5, wait=True)
if response.data.get('error'):
raise RuntimeError('Media processing failed')
print(response.data['assembly_id'])Autenticación
- Lee la Auth Key y el Auth Secret de Transloadit desde variables de entorno del servidor y pasa ambos al SDK oficial de Python.
- El SDK firma las solicitudes cuando se proporciona el secreto; nunca incluyas ni una ni otra credencial en el control de versiones.
- Usa un Template fijo cuando los usuarios de la aplicación elijan archivos, o valida cada Step dinámico antes de crear una Assembly.
Limitaciones y notas operativas
- wait=True bloquea el proceso hasta que finaliza la Assembly. Para los procesos de trabajo del servidor web y las tareas de medios de larga duración, guarda el ID de la Assembly y observa la finalización de forma asíncrona.
- La versión 2 requiere Python 3.12 o posterior. El comando de instalación selecciona la versión 2 explícitamente en lugar de instalar silenciosamente el SDK 1.x anterior en Python 3.9 a 3.11.
- La opción retries limita los reintentos de las subidas reanudables y de la creación de Assemblies sujeta a limitación de tasa o la consulta periódica del estado; no proporciona idempotencia a nivel de aplicación. Con wait=True, cuando se agotan los reintentos de consulta del estado, se lanza AssemblyPollingError aunque es posible que la Assembly siga en ejecución. Usa los detalles de recuperación de la excepción para hacer seguimiento de la Assembly existente en lugar de volver a enviar el trabajo a ciegas.
Más integraciones