Python + Transloadit
Téléverser et traiter un fichier local avec pytransloadit, le client Python maintenu pour l’API REST de Transloadit.
Recette exécutable
Mettre en place l’intégration
Le script lit le chemin d’un fichier depuis la ligne de commande, téléverse ce fichier, redimensionne l’image, attend la fin du traitement et affiche l’ID de l’Assembly.
- Créez un environnement virtuel et installez pytransloadit.
- Définissez TRANSLOADIT_KEY et TRANSLOADIT_SECRET dans l’environnement du processus.
- Exécutez python process_image.py path/to/photo.jpg.
Installer
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'])Authentification
- Lisez l’Auth Key et l’Auth Secret Transloadit depuis les variables d’environnement du serveur et transmettez-les tous deux au SDK Python officiel.
- Le SDK signe les requêtes lorsque le secret est fourni ; ne versionnez jamais aucun de ces deux identifiants dans le contrôle de source.
- Utilisez un Template fixe lorsque les utilisateurs de l’application choisissent les fichiers, ou validez chaque Step dynamique avant de créer une Assembly.
Limitations et notes opérationnelles
- wait=True bloque le processus jusqu’à la fin de l’Assembly. Pour les web workers et les traitements média de longue durée, stockez l’identifiant d’Assembly et suivez son achèvement de manière asynchrone.
- La version 2 nécessite Python 3.12 ou une version ultérieure. La commande d’installation sélectionne explicitement la version 2 au lieu d’installer silencieusement l’ancien SDK 1.x sur Python 3.9 à 3.11.
- L’option retries limite les nouvelles tentatives des téléversements avec reprise et de la création d’Assemblies ou de l’interrogation de leur statut soumises à une limitation de débit ; elle ne fournit pas d’idempotence au niveau de l’application. Avec wait=True, lorsque les nouvelles tentatives d’interrogation sont épuisées, une exception AssemblyPollingError est levée alors que l’Assembly peut encore être en cours d’exécution. Utilisez les informations de récupération fournies par l’exception pour suivre l’Assembly existante au lieu de soumettre de nouveau le traitement à l’aveugle.
Autres intégrations