# Assembly Execution Progress

###### Warnung

Diese Funktion befindet sich noch in einer experimentellen Phase. Ihr genaues Verhalten, ihre API und ihre Preisgestaltung können sich ändern, während wir weiter daran arbeiten. Falls Sie Fehler oder ungewöhnliches Verhalten feststellen, [kontaktieren Sie uns](mailto:support@transloadit.com) bitte.

Assembly Execution Progress liefert Echtzeitschätzungen dazu, wie weit die Ausführung einerAssembly fortgeschritten ist. Ein Prozentwert wird sowohl für den Fortschritt der gesamten Assembly als auch für jede hochgeladene Datei berechnet sowie für alle Importe, die eine `original_id` enthalten. Dadurch erhalten Sie präzise Fortschrittsinformationen, selbst wenn Dateien innerhalb derselbenAssembly unterschiedlich verarbeitet werden, beispielsweise aufgrund verschiedener Dateitypen.

Zur Berechnung dieser Prozentwerte prognostiziert unsere Assembly-Engine, welche Steps voraussichtlich für den verbleibenden Teil derAssembly ausgeführt werden. Diese Prognose wird anschließend mit den bereits abgeschlossenen Steps verglichen, um den geschätzten Fortschritt zu ermitteln. Anschließend verbessern wir diese Schätzung durch Fortschrittsinformationen der derzeit ausgeführtenSteps. Bei `/video/encode`-Steps berücksichtigen wir beispielsweise, welcher Anteil des Videos aktuell codiert wurde.

Assembly Execution Progress ist eine wertvolle Erweiterung Ihrer Benutzeroberfläche, die Ihren Benutzern Einblick in die Verarbeitung ihrer Dateien gibt. In Kombination mit dem regulären Upload-Fortschritt, der den Fortschritt bei der Übertragung der Dateien Ihrer Benutzer auf unsere Server anzeigt, vermittelt Assembly Execution Progress Ihren Benutzern, dass ihre Dateien zuverlässig verarbeitet werden und die Vorgänge im Hintergrund laufen.

## Kompatible Assemblies

Wir versuchen, Execution Progressfür jede Assembly bereitzustellen. Dies ist jedoch nicht in allen Fällen zuverlässig möglich. Wenn Ihre Assembly einenStep mit einer nicht vorhersehbaren Anzahl von Ergebnissen enthält, kann der Fortschritt erst geschätzt werden, nachdem dieser Step abgeschlossen ist. Sobald jedoch alle diese Steps abgeschlossen sind, kannExecution Progress berechnet werden.

Bei folgenden Steps lässt sich die Anzahl der Ergebnisse nicht vorhersagen:

* Importieren von Verzeichnissen über `/s3/import`, `/azure/import` usw. Dies gilt nicht für den Import einer festgelegten Anzahl von Dateien.
* `/file/compress`: Extrahieren beliebiger Archivtypen.
* `/document/thumbs`: Erstellen von Vorschaubildern für ein Dokument, ohne die Seitenzahl anzugeben.

Wenn Ihre Assembly keine solchenSteps enthält, istExecution Progress von Anfang an verfügbar. Wenn sie solche Steps enthält, ist der Fortschritt verfügbar, nachdem diese Steps abgeschlossen wurden.

Execution Progress ist für URL-Transform-Assemblies nicht verfügbar; das `emit_execution_progress`-Flag wird ignoriert. Bei mehrteiligen Uploads kann die Fortschrittsermittlung erst beginnen, nachdem die Upload-Metadaten extrahiert wurden. Dies geschieht, sobald die Uploads abgeschlossen sind.

## Assembly Execution Progress aktivieren

Sie müssen sich für jede Assembly, für die SieExecution Progress erhalten möchten, ausdrücklich anmelden. Dies erfolgt beim [Erstellen der Assembly](/de/docs/api/assemblies-post.md), indem Sie die Eigenschaft`"emit_execution_progress": true` in die Assembly Instructions aufnehmen, zum Beispiel:

![](/_next/static/media/copy.04p1cju9qekk_.svg?dpl=dpl_3z41v8VuCJJKgtsQfSKB6o2uiSXL)

```jsonc
{
  "steps": {
    "resized": {
      "robot": "/image/resize",
      "use": ":original",
      "width": 100,
      "height": 100,
      "resize_strategy": "fillcrop",
    },
    // ...
  },
  // ...

  // Enable execution progress
  "emit_execution_progress": true,
}

```

## Schnellstart

1. Fügen Sie `"emit_execution_progress": true` zu Ihren Assembly Instructions hinzu.
2. Öffnen Sie den [Assembly-Aktualisierungsstream](/de/docs/api/assemblies-assembly-id-stream-get.md).
3. Reagieren Sie auf das Ereignis `assembly_execution_progress` und aktualisieren Sie Ihre Benutzeroberfläche.

## Execution Progress empfangen

Assembly Execution Progress kann über den Aktualisierungsstream der Assembly abgerufen werden. Kurz gesagt: Nachdem eine Assembly erstellt wurde, enthält derAssembly Status eine URL, über die Sie Nachrichten und Ereignisse zum Status der Assembly in Echtzeit abrufen können. Die genauen Einzelheiten finden Sie in der[Dokumentation](/de/docs/api/assemblies-assembly-id-stream-get.md).

Sobald der Aktualisierungsstream einer Assembly geöffnet undExecution Progress aktiviert ist, erhalten Sie regelmäßig etwa alle 2 Sekunden Fortschrittsaktualisierungen. Die Aktualisierung wird über das Ereignis`assembly_execution_progress` gesendet. Sie enthält eine JSON-Nutzlast, die den Fortschritt der gesamten Assembly und jeder Originaldatei beschreibt, also der Uploads und aller Importe, die eine `original_id` enthalten, zum Beispiel:

![](/_next/static/media/copy.04p1cju9qekk_.svg?dpl=dpl_3z41v8VuCJJKgtsQfSKB6o2uiSXL)

```json
{
  "progress_combined": 75,
  "progress_per_original_file": [
    {
      "original_id": "6bb16f6cd49a44b4ae431f576e016c6d",
      "progress": 50
    },

    {
      "original_id": "56921a2dd46246d3b4d3a98b9f8ed4e1",
      "progress": 100
    }
  ]
}

```

Im obigen Beispiel ist die Verarbeitung der gesamten Assembly zu 75 % abgeschlossen. Die Verarbeitung der Datei mit der `original_id` `56921a2dd46246d3b4d3a98b9f8ed4e1` ist abgeschlossen. Das bedeutet, dass sie alle ihre Steps durchlaufen hat. Die Datei mit der `original_id` `6bb16f6cd49a44b4ae431f576e016c6d` ist noch nicht fertig und hat bisher einen Fortschritt von 50 % erreicht.

Wenn keine Fortschrittsschätzung verfügbar ist, weil die Assemblynicht abgeschlossene Steps enthält, deren Anzahl von Ergebnissen nicht vorhergesagt werden kann, wird kein Ereignis ausgegeben, bis diese Stepsabgeschlossen sind.
