Optimiere deine Workflows
Wenn du einen Workflow erstellst, möchtest du sicherstellen, dass er so effizient wie möglich abläuft. In diesem Dokument werden Szenarien beschrieben, die zu einer Drosselung deines Workflows oder zum Ausschöpfen der API-Grenzen führen können, und gibt Tipps, wie du diese Probleme lösen oder umgehen kannst.
Auf dieser Seite
Häufige Probleme mit der Leistung
In diesem Abschnitt werden häufige Szenarien beschrieben, die zu Leistungsproblemen in deinem Workflow führen können. Es können mehrere Szenarien gleichzeitig auftreten, wodurch sich die Wahrscheinlichkeit erhöht, dass du Leistungsprobleme feststellst. Bei Fehlern im Zusammenhang mit der Editorkonfiguration oder der Ratenbegrenzung verwende den Guide zur Fehlerbehebung.
Trigger für hohes Volumen
Bei Triggern mit hohem Volumen handelt es sich um solche, bei denen das zugrundeliegende Ereignis häufig auftritt. Beispielsweise wird der Trigger Produktvariante Inventarmenge geändert bei jeder Bestandsänderung in einem Shop ausgeführt. Das Volumen eines Triggers ist wie ein Multiplikator für jedes Problem in deinem Workflow. Wenn ein Workflow beispielsweise 100 Produkte abruft und 1000 Mal pro Minute ausgeführt wird, dann werden 100.000 Produkte pro Minute abgerufen. Dies kann zu Leistungsproblemen führen.
Lösung: Optimiere deinen Workflow, indem du weniger Daten verwendest, oder verwende Warteschritte, um deinen Workflow wie unten beschrieben zu partitionieren.
Viele Workflows verwenden den gleichen Trigger
In Flow kannst du mit demselben Trigger mehr als einen Workflow erstellen. Diese Workflows werden parallel zueinander ausgeführt, wenn das Ereignis eintritt. Dies kann aus folgenden Gründen problematisch sein, wenn du zu viele Workflows mit demselben Trigger ausführst:
- Die Workflows können miteinander in Konflikt geraten.
- Die Workflows versuchen, gleichzeitig Daten abzurufen und APIs aufzurufen, und dein Shop ist durch Shopify-API-Limits in der Anzahl der Anfragen, die er gleichzeitig verarbeiten kann, begrenzt.
Lösung: Kombiniere Workflows, die denselben Trigger verwenden, in einem einzigen Workflow. Auf diese Weise kannst du auch kontrollieren, wann die einzelnen Programme ausgeführt werden, damit sie nicht in Konflikt miteinander geraten. Die Kombination von Workflows ist vor allem dann sinnvoll, wenn die Workflows nicht viele Daten abrufen oder die abgerufenen Daten gleich sind. Wenn der Workflow viele unterschiedliche Daten abruft, ist die Leistung möglicherweise besser, wenn du die Daten getrennt hältst.
Verwendung von Listen oder falschen Daten
Wenn du einen Workflow erstellst, verwendest du möglicherweise eine Liste von Objekten, z. B. Produkte oder Bestellungen. Wenn du eine Liste von Objekten verwendest, dann ruft Flow alle Objekte in der Liste ab. Dies kann ein Problem sein, wenn die Liste viele Daten enthält.
Ein weiteres häufiges Problem ist die versehentliche Auswahl der falschen Daten. Um beispielsweise die Produktdaten einer Bestellung zu prüfen, hast du möglicherweise order / publication / products / tags
anstelle von order / line items / product / tags
ausgewählt. Das erste Ergebnis ist in der Regel falsch, da es alle Produkte für eine Veröffentlichung abruft, während die Absicht darin besteht, die Produkte der Bestellung zu überprüfen. Die Auswahl einer so großen Liste kann zu Leistungsproblemen führen, und die Auswahl der falschen Liste kann dazu führen, dass deine Automatisierung das Falsche tut.
Lösung: Wähle die benötigten Daten sorgfältig aus und vermeide die Verwendung von Listen, wenn diese nicht unbedingt erforderlich sind. Teste deinen Workflow, um sicherzustellen, dass er deinen Erwartungen entspricht.
Metafelder
Das Abrufen einzelner Metafeld- oder Metaobjektdaten sollte keine Leistungsprobleme verursachen. Ein häufiges Problem besteht jedoch darin, dass die Liste metafields
ausgewählt wird und eine Schleife über alle Metafelder einer Ressource ausgeführt wird. Wenn ein value
-Feld viele Daten enthält, beispielsweise wenn HTML-Objekte verwendet werden, kann dies dazu führen, dass viele Daten verarbeitet werden und möglicherweise Leistungsprobleme auftreten.
Lösung: Verwende das Objekt metafield
(Dokumente) anstelle von metafields
.
Übermäßiger Einsatz von „Daten abrufen“-Aktionen
Workflows, die eine Daten abrufen-Aktion wie Bestelldaten abrufen verwenden, sind so konzipiert, dass sie maximal 100 Objekte pro Workflow aus Daten abrufen-Aktionen zurückgeben. Das Überschreiten von 100 Objekten kann zu Leistungsproblemen führen.
Lösung: Führe den Workflow öfter aus, damit deine Abfrage nicht mehr als 100 Ergebnisse zurückgeben muss. Verwende dieselbe Aktion Daten abrufen erneut, anstatt wiederholt Abfragen durchzuführen.
Keine Abfragefilter in Aktionen vom Typ „Daten abrufen“
Daten abrufen-Aktionen rufen die Shopify API auf. Wenn keine Abfrage vorhanden ist, gibt die API entweder alle Ressourcen oder keine zurück. Dies kann zu Leistungsproblemen führen, aber auch dazu, dass in deinem Shop die falschen Aktionen ausgeführt werden, wenn du die zurückgegebenen Daten später im Workflow verwendest.
Lösung: Schließe immer Abfragefilter in deine Daten abrufen-Aktionen ein.
Falsche Abfragefilter in „Daten abrufen“-Aktionen
Daten abrufen-Abfragen unterstützen eine begrenzte Anzahl von Abfragefiltern, eine bestimmte Syntax und einen bestimmten Satz von Werten, die in Filtern verwendet werden können. Die Eingabe eines falschen Filters, Filterwerts oder einer falschen Syntax kann dazu führen, dass die gesamte Abfrage ignoriert wird. Dadurch können ähnliche Probleme auftreten wie wenn kein Abfragefilter vorhanden ist.
Lösung: Verwende die von der Aktion in Flow bereitgestellte Dokumentation, um die Liste der verfügbaren Abfragefilter zu finden. Teste deine Abfragefilter immer, um sicherzustellen, dass sie die erwarteten Daten zurückgeben. Du kannst eine Protokollausgabe-Aktion in Flow verwenden (um die zurückgegebenen Daten anzuzeigen) oder die Shopify-Adminbereich-API direkt aufrufen (über einen API Client wie Postman oder über die App GraphiQL).
Zusätzliche Lösungen für häufige Leistungsprobleme
Verwende Warteschritte, um das Abrufen von Daten zu verzögern
Mit Warteschritten kannst du einen Workflow für eine angegebene Zeitspanne anhalten. Warteschritte können aber auch zur Optimierung deines Workflows verwendet werden. Jeder Warteschritt teilt die Ausführung deines Workflows effektiv in separate Blöcke auf. Wenn der Workflow läuft, holt er automatisch die Daten ab, die bis zum ersten Warteschritt benötigt werden (und holt nach dem Warteschritt für den Rest des Workflows erneut Daten ab). Wenn ein Workflow einen Trigger mit hohem Volumen verwendet und viele Daten abruft, aber nur gelegentlich Maßnahmen ergreift, kannst du alle komplexen Daten oder Logik nach einem Bedingungs- und Warteschrittpaar einfügen. Zum Beispiel:
- Trigger: Produktvariante Inventarmenge geändert
- Zustand: Überprüfe, ob das Produkt in einer Kollektion ist
- Wenn wahr, Aktion: 2 Sekunden warten
- Aktion: E-Mail an den Kunden senden (mit vielen Daten)
In diesem Beispiel werden die für Schritt 4 erforderlichen Daten erst abgefragt, nachdem der Warteschritt abgeschlossen ist. Wenn der Zustand „false“ ist, bedeutet dies, dass der Workflow schneller und effizienter ausgeführt wird.
Was nicht optimiert werden sollte
Dieselben Daten in mehreren Aktionen verwenden
Wenn du dasselbe Feld in mehreren Schritten verwendest, analysiert Flow die Verwendung dieser Felder und holt diese Daten nur einmal ab. Dies bedeutet, dass du die Daten beliebig oft verwenden kannst, ohne dir Gedanken über die Leistung machen zu müssen.