Assembly Execution Progress
Cette fonctionnalité est encore expérimentale. Son comportement exact, son API et sa tarification pourraient changer au fil de son développement. Si vous rencontrez des bugs ou des comportements inhabituels, veuillez nous contacter.
Assembly Execution Progress fournit
des estimations en temps réel de l’avancement de l’exécution d’une
Assembly. Un pourcentage est calculé pour la progression
de l’ensemble de l’Assembly, ainsi que pour chaque fichier
téléversé (et toute importation incluant un original_id). Cela fournit des informations
précises sur la progression, même si les fichiers sont traités différemment dans la même
Assembly, par exemple en raison de types de fichiers
différents.
Pour calculer ces pourcentages, notre moteur d’Assembly
prédit quels Steps sont susceptibles d’être exécutés
pendant la suite de l’Assembly. Cette prédiction est ensuite
comparée aux Steps déjà terminés pour obtenir une
estimation de la progression. Nous affinons ensuite cette estimation en y intégrant les informations
de progression des Steps en cours d’exécution. Par
exemple, pour les Steps /video/encode,
nous intégrons des informations sur la part de la vidéo déjà encodée.
Assembly Execution Progress est un atout majeur pour votre interface utilisateur, car il renseigne vos utilisateurs sur ce qui se passe avec leurs fichiers. En complément de la progression habituelle des téléversements, qui indique l’avancement du transfert des fichiers des utilisateurs vers nos serveurs, Assembly Execution Progress aide à informer vos utilisateurs que leurs fichiers sont pris en charge et que des opérations se déroulent en arrière-plan.
Assemblies compatibles
Nous essayons de fournir Execution Progress pour chaque Assembly, mais ce n’est pas possible de manière fiable dans tous les cas. Si votre Assembly inclut un Step dont le nombre de résultats est imprévisible, aucune progression ne peut être estimée tant que ce Step n’est pas terminé. Toutefois, une fois tous ces Steps terminés, Execution Progress peut être calculé.
Les Steps dont le nombre de résultats ne peut pas être prédit sont les suivants :
- Importer des répertoires via
/s3/import,/azure/import, etc. Cela n’inclut pas l’importation d’un nombre fixe de fichiers. /file/decompress: extraire une archive en un nombre variable de fichiers./document/thumbs: générer des miniatures pour un document sans préciser le numéro de page.
Si votre Assembly n’inclut pas de tels Steps, Execution Progress est disponible dès le début. Si elle inclut de tels Steps, la progression est disponible une fois ces Steps terminés.
Execution Progress n’est pas disponible
pour les Assemblies de transformation d’URL (l’indicateur emit_execution_progress est
ignoré). Pour les téléversements multiparties, la progression ne peut commencer qu’après l’extraction
des métadonnées de téléversement, qui a lieu une fois les téléversements terminés.
Activer Assembly Execution Progress
Vous devez activer explicitement cette fonctionnalité pour chaque
Assembly dont vous souhaitez recevoir
Execution Progress. Cette activation se
fait lors de la création de l’Assembly, en incluant la propriété
"emit_execution_progress": true dans les
Assembly Instructions, par exemple :
{
"steps": {
"resized": {
"robot": "/image/resize",
"use": ":original",
"width": 100,
"height": 100,
"resize_strategy": "fillcrop",
},
// ...
},
// ...
// Enable execution progress
"emit_execution_progress": true,
}
Démarrage rapide
- Ajoutez
"emit_execution_progress": trueà vos Assembly Instructions. - Ouvrez le flux de mises à jour de l’Assembly.
- Écoutez l’événement
assembly_execution_progresset mettez à jour votre interface utilisateur.
Recevoir Execution Progress
Assembly Execution Progress peut être récupéré à l’aide du flux de mises à jour de l’Assembly. En résumé, une fois qu’une Assembly est créée, l’Assembly Status contient une URL à laquelle vous pouvez récupérer en temps réel des messages et des événements sur l’état de l’Assembly. Les détails sont présentés dans la documentation.
Une fois le flux de mises à jour d’une Assembly ouvert et
Execution Progress activé, vous recevrez
régulièrement des mises à jour de progression, environ toutes les 2 secondes. La mise à jour est
envoyée via l’événement assembly_execution_progress. Elle inclut une charge utile JSON décrivant la
progression de l’ensemble de l’Assembly et de chaque fichier
d’origine (téléversements et toute importation incluant un original_id), par exemple :
{
"progress_combined": 75,
"progress_per_original_file": [
{
"original_id": "6bb16f6cd49a44b4ae431f576e016c6d",
"progress": 50
},
{
"original_id": "56921a2dd46246d3b4d3a98b9f8ed4e1",
"progress": 100
}
]
}
Dans l’exemple ci-dessus, le traitement de l’ensemble de
l’Assembly a atteint 75 %. Le traitement du fichier dont
le original_id est 56921a2dd46246d3b4d3a98b9f8ed4e1 est terminé, ce qui signifie qu’il
est passé par tous ses Steps. Le traitement du fichier
dont le original_id est 6bb16f6cd49a44b4ae431f576e016c6d n’est pas encore terminé, avec
une progression de 50 % pour le moment.
Si aucune estimation de progression n’est disponible parce que l’Assembly inclut des Steps non terminés dont le nombre de résultats ne peut pas être prédit, aucun événement ne sera émis tant que ces Steps ne seront pas terminés.