Otimização dos fluxos de trabalho do Shopify Flow
Ao criar um fluxo de trabalho, é importante garantir que ele seja executado da forma mais eficiente possível. Este documento descreve cenários que podem causar a limitação (throttled) dos fluxos de trabalho ou o esgotamento dos limites da API, além de dar dicas sobre como resolver ou encontrar soluções alternativas para esses problemas.
Nesta página
Problemas comuns de desempenho
Esta seção descreve cenários comuns que podem causar problemas de desempenho nos fluxos de trabalho. É possível que mais de um cenário ocorra ao mesmo tempo, o que aumenta a probabilidade de você observar problemas de desempenho. Para erros relacionados à configuração do editor ou à limitação de taxa, use o guia de solução de problemas.
Acionadores de alto volume
Acionadores de alto volume são aqueles em que o evento subjacente ocorre com frequência. Por exemplo, o acionador Volume de estoque da variante do produto alterado é executado para cada alteração de estoque em uma loja. O volume de um acionador atua como um multiplicador para qualquer problema no fluxo de trabalho. Por exemplo, se um fluxo de trabalho busca 100 produtos e é executado 1.000 vezes por minuto, ele buscará 100.000 produtos por minuto. Isso pode causar problemas de desempenho.
Solução: otimize os fluxos de trabalho usando menos dados ou use etapas de espera para particionar o fluxo de trabalho.
Muitos fluxos de trabalho usando o mesmo acionador
No Flow, é possível criar mais de um fluxo de trabalho com o mesmo acionador. Esses fluxos de trabalho serão executados em paralelo quando o evento ocorrer. Isso pode ser problemático se você executar muitos fluxos de trabalho com o mesmo acionador, pelos seguintes motivos:
- Os fluxos de trabalho podem entrar em conflito entre si.
- Os fluxos de trabalho tentam buscar dados e chamar APIs ao mesmo tempo, e a loja tem um limite de solicitações que pode processar de uma só vez devido aos limites da Shopify API.
Solução: combine os fluxos de trabalho que usam o mesmo acionador em um único fluxo de trabalho. Isso também permite controlar quando cada um deles é executado, para que não entrem em conflito. A combinação de fluxos de trabalho é especialmente útil se eles não recuperam muitos dados ou se os dados recuperados são os mesmos. Se os fluxos de trabalho recuperarem muitos dados distintos, talvez seja melhor mantê-los separados para ter um desempenho superior.
Uso de listas ou de dados incorretos
Ao criar um fluxo de trabalho, você pode usar uma lista de objetos, como produtos ou pedidos. Se você usar uma lista de objetos, o Flow buscará todos os objetos da lista. Isso pode ser um problema quando a lista contém muitos dados.
Outro problema comum é selecionar acidentalmente os dados errados. Por exemplo, para conferir os dados do produto em um pedido, você pode ter selecionado pedido / publicação / produtos / tags em vez de pedido / itens de linha / produto / tags. O primeiro resultado costuma ser incorreto, pois busca todos os produtos de uma publicação quando a intenção é conferir os produtos do pedido. A escolha de uma lista tão grande pode causar problemas de desempenho, e a escolha da lista errada pode fazer com que a automação execute a ação incorreta.
Solução: selecione com atenção os dados necessários e evite usar listas quando não for preciso. Teste os fluxos de trabalho para garantir que eles façam o que você espera.
Metacampos
A busca de dados de metacampo ou metaobjeto individuais não deve causar problemas de desempenho. No entanto, um problema comum é escolher a lista metacampos e percorrer todos os metacampos de um recurso. Se um campo de valor contiver muitos dados, por exemplo, quando objetos HTML são usados, isso pode resultar no processamento de um grande volume de dados e, possivelmente, causar problemas de desempenho.
Solução: use o objeto metacampo em vez de metacampos.
Uso excessivo de ações para obter dados
Os fluxos de trabalho que usam uma ação para obter dados, como Obter dados do pedido, são projetados para retornar no máximo 100 objetos por fluxo de trabalho de ações para obter dados. Ultrapassar 100 objetos pode causar problemas de desempenho.
Solução: execute o fluxo de trabalho com mais frequência para que a consulta não precise retornar mais de 100 resultados. Reutilize a mesma ação para obter dados em vez de fazer consultas repetidas.
Sem filtros de consulta em ações para obter dados
As ações para obter dados chamam a Shopify API. Se nenhuma consulta estiver presente, a API retornará todos os recursos ou nenhum. Isso pode causar problemas de desempenho, mas também pode fazer com que as ações erradas sejam executadas na loja quando você usar os dados retornados posteriormente no fluxo de trabalho.
Solução: sempre inclua filtros de consulta nas ações para obter dados.
Filtros de consulta incorretos em ações para obter dados
As consultas para obter dados são compatíveis com um conjunto limitado de filtros de consulta, uma sintaxe específica e um conjunto específico de valores que podem ser usados em filtros. Inserir o filtro, o valor do filtro ou a sintaxe incorretos pode fazer com que toda a consulta seja ignorada, o que pode causar problemas semelhantes a quando nenhum filtro de consulta está presente.
Solução: use a documentação fornecida pela ação no Flow para encontrar a lista de filtros de consulta disponíveis. Sempre teste os filtros de consulta para garantir que retornem os dados esperados. É possível usar uma ação de saída de log no Flow para analisar os dados retornados ou chamar a Shopify Admin API diretamente por meio de um cliente da API como o Postman ou pelo app GraphiQL.
Soluções adicionais para problemas comuns de desempenho
Uso de etapas de espera para atrasar a busca de dados
As etapas de espera permitem pausar um fluxo de trabalho por um período especificado, mas também podem ser usadas para otimizar os fluxos de trabalho. Cada etapa de espera divide efetivamente a execução do fluxo de trabalho em fases separadas. Quando o fluxo de trabalho é executado, ele busca automaticamente os dados necessários até a primeira etapa de espera (e busca dados novamente após a etapa de espera para o restante do fluxo de trabalho).
Se um fluxo de trabalho usa um acionador de alto volume e busca muitos dados, mas executará uma ação apenas ocasionalmente, é possível colocar dados ou lógicas complexas após um par de condição e etapa de espera. Por exemplo:
- Acionador: Volume de estoque da variante do produto alterado.
- Condição: verificar se o produto está em uma coleção.
- Se verdadeiro, Ação: aguardar 2 segundos.
- Ação: enviar um e-mail para o cliente (com muitos dados).
Neste exemplo, os dados necessários para a etapa 4 só são consultados após a conclusão da etapa de espera. Se a condição for geralmente falsa, o fluxo de trabalho será executado de forma mais rápida e eficiente.
O que não otimizar
Uso dos mesmos dados em várias ações
Quando você usa o mesmo campo em várias etapas, o Flow analisa o uso desses campos e busca os dados apenas uma vez. Isso significa que você pode usar os dados quantas vezes quiser sem se preocupar com o desempenho.