Optimalisering av arbeidsflyter

Når du bygger en arbeidsflyt, er det lurt å sørge for at den kjører så effektivt som mulig. Dette dokumentet beskriver scenarier som kan føre til at arbeidsflyter blir begrenset eller overskrider API-grenser, og tips om hvordan du løser eller midlertidig løser disse problemene.

Vanlige ytelsesproblemer

Avsnittet beskriver vanlige scenarier som kan forårsake ytelsesproblemer i arbeidsflytene dine. Det er mulig å ha mer enn ett scenario samtidig, noe som vil øke sannsynligheten for at du opplever ytelsesproblemer. For feil relatert til redaktørkonfigurasjon eller hastighetsbegrensning, bruk feilsøkingsguiden.

Høyvolum-utløsere

Høyvolum-utløsere er de der den underliggende hendelsen skjer ofte. For eksempel kjører utløseren endret lagerantall for produktvariant for hver lagerbeholdningsendring i en butikk. Volumet til en utløser er som en multiplikator for problemer i arbeidsflyten. Hvis for eksempel en arbeidsflyt henter 100 produkter og kjører 1000 ganger per minutt, henter den 100 000 produkter per minutt. Dette kan forårsake ytelsesproblemer.

Løsning: Optimaliser arbeidsflytene dine ved å bruke mindre data, eller bruk ventetrinn for å dele opp arbeidsflyten som beskrevet nedenfor.

Mange arbeidsflyter som bruker samme utløser

I Flow kan du bygge mer enn én arbeidsflyt som bruker den samme utløseren. Disse arbeidsflytene kjører parallelt med hverandre når hendelsen skjer. Dette kan være problematisk hvis du kjører for mange arbeidsflyter med samme utløser, av følgende årsaker:

  • Arbeidsflytene kan komme i konflikt med hverandre.
  • Arbeidsflytene prøver å hente data og kalle på API-er samtidig, og Shopifys API-grenser begrenser hvor mange forespørsler butikken kan håndtere samtidig.

Løsning: Kombiner arbeidsflyter som bruker samme utløser, til én enkelt arbeidsflyt. Dette lar deg også kontrollere når hver av dem kjøres, slik at de ikke kommer i konflikt med hverandre. Kombinering av arbeidsflyter er spesielt nyttig hvis arbeidsflytene ikke henter mye data eller hvis dataene de henter, er de samme. Hvis arbeidsflytene inneholder mange forskjellige data, kan det å holde dem adskilt, gi bedre ytelse.

Bruker lister eller feil data

Når du bygger en arbeidsflyt, kan du bruke en liste over objekter, for eksempel produkter eller bestillinger. Hvis du bruker en liste over objekter, henter Flow alle objektene i listen. Dette kan være et problem når listen inneholder mye data.

Et annet vanlig problem er å velge feil data ved et uhell. For å sjekke produktdata for en bestilling, kan du for eksempel ha valgt order / publication / products / tags i stedet for order / line items / product / tags. Det første resultatet er vanligvis feil, da det henter alle produktene for en publikasjon, når hensikten er å sjekke produkteer i bestillingen. Å velge en så stor liste kan føre til ytelsesproblemer, og å velge feil liste kan føre til at automasjonen gjør feil.

Løsning: Velg dataene du trenger, med omhu, og unngå å bruke lister når du ikke trenger det. Test arbeidsflyter for å sikre at de gjør det du forventer.

Metafelter

Henting av individuelle metafelt- eller metaobjektdata bør ikke forårsake ytelsesproblemer. Et vanlig problem er imidlertid å velge listen metafields og gå gjennom alle metafeltene i en ressurs. Hvis et value-felt inneholder mye data, for eksempel når det brukes HTML-objekter, kan dette resultere i at mye data blir behandlet, og potensielt forårsake ytelsesproblemer.

Løsning: Bruk metafield-objektet (docs) i stedet for metafields.

Overdreven bruk av Hent data-handlinger

Arbeidsflyter som bruker en Hent data-handling, for eksempel Hent ordredata, er utformet for å returnere maksimalt 100 objekter per arbeidsflyt fra Hent data-handlinger . Å bruke over 100 objekter kan forårsake ytelsesproblemer.

Løsning: Kjør arbeidsflyten oftere, slik at spørringen ikke trenger å returnere mer enn 100 resultater. Gjenbruk den samme Hent data-handlingen i stedet for å bruke gjentatte spørringer.

Ingen spørringsfiltre i Hent data-handlinger

Hent data-handlinger kaller på Shopify API. Hvis det ikke finnes noen spørring, returnerer API-et enten alle ressurser eller ingen. Dette kan føre til ytelsesproblemer, men det kan også føre til at feil handlinger blir utført i butikken hvis du bruker dataene som returneres senere i arbeidsflyten.

Løsning: Inkluder alltid spørringsfiltre i Hent data-handlingene.

Feil søkefiltre i Hent data-handlinger

Hent data-spørringer støtter et begrenset sett med spørringsfiltre, er spesifikt syntaks og et spesifikt sett med verdier som kan brukes i filtre. Hvis du skriver inn feil filter, filterverdi eller syntaks, kan det føre til at hele spørringen ignoreres, noe som kan føre til problemer tilsvarende det som skjer når det ikke finnes noe spørringsfilter.

Løsning: Bruk dokumentasjonen fra handlingen i Flow for å finne listen over tilgjengelige spørringsfiltre. Test alltid spørringsfiltre for å sikre at de returnerer de forventede dataene. Du kan bruke en Logg output-handling i Flow (for å se dataene som returneres), eller du kan kalle på Shopify Admin API direkte (gjennom en API-klient som Postman, eller gjennom appen GraphiQL).

Tilleggsløsninger for vanlige ytelsesproblemer

Bruk ventetrinn for å utsette datahenting

Ventetrinn lar deg sette en arbeidsflyt på pause i en bestemt tidsperiode, men ventetrinn kan også brukes til å optimalisere arbeidsflytene dine. Hvert ventetrinn Split effektivt opp utførelsen av arbeidsflyten din i separate blokker. Når arbeidsflyten kjører, Fetch den automatisk data som kreves frem til første ventetrinn (og Fetch data igjen etter ventetrinnet for REST av arbeidsflyten). Hvis en arbeidsflyt bruker et høyt volum utløser og Fetch mye data, men vil bare ta grep av og til, så kan du sette alle komplekse data eller logikk etter en tilstand og vente trinn sammenkoble. For eksempel:

  1. Utløser: Endret lagerantall for produktvariant
  2. Tilstand: Sjekk om produktet er i en samling
  3. Hvis sant, handling: Vent 2 sekunder
  4. Handling: Send en send e-post til kunden (med mye data)

I dette eksemplet blir dataene som kreves for trinn 4, kun forespurt etter at Vent-trinnet er fullført. Hvis tilstanden vanligvis er Feil, betyr dette at arbeidsflyten kjører raskere og mer effektivt.

Hva du ikke skal optimalisere

Bruke samme data i flere handlinger

Når du bruker det samme feltet i flere trinn, analyserer Flow bruken av disse feltene, og henter bare disse dataene én gang. Dette betyr at du kan bruke dataene så mange ganger du vil uten å bekymre deg for ytelsen.

Finner du ikke svarene du leter etter? Vi er her for å hjelpe deg.