Optimiza los flujos de trabajo de Shopify Flow

Cuando creas un flujo de trabajo, quieres asegurarte de que se ejecute de la forma más eficiente posible. Este documento describe escenarios que pueden hacer que los flujos de trabajo se ralenticen o agoten los límites de la API y da consejos para resolverlos o aplicar métodos alternativos.

Problemas de rendimiento frecuentes

Esta sección describe escenarios comunes que pueden causar problemas de rendimiento en los flujos de trabajo. Es posible que se den varios escenarios al mismo tiempo, lo que aumenta la probabilidad de observar problemas de rendimiento. Para errores relacionados con la configuración del editor o con la limitación de tasa, usa la guía de solución de problemas.

Activadores de alto volumen

Se consideran activadores de alto volumen aquellos en los que el evento subyacente ocurre con frecuencia. Por ejemplo, el activador Product variant inventory quantity changed se ejecuta con cada cambio de inventario en una tienda. El volumen del activador actúa como un multiplicador de cualquier problema del flujo. Por ejemplo, si un flujo recupera 100 productos y se ejecuta 1.000 veces por minuto, estará recuperando 100.000 productos por minuto. Esto puede provocar problemas de rendimiento.

Solución: optimiza los flujos de trabajo usando menos datos o usa pasos de espera para dividir el flujo.

Varios flujos de trabajo con el mismo activador

En Flow, puedes crear más de un flujo de trabajo con el mismo activador. Estos flujos se ejecutan en paralelo cuando ocurre el evento. Esto puede ser problemático si ejecutas demasiados flujos con el mismo activador por los siguientes motivos:

  • Los flujos de trabajo pueden entrar en conflicto entre sí.
  • Los flujos intentan recuperar datos y hacer llamadas a las API al mismo tiempo, y la tienda está limitada, por los límites de Shopify API, en la cantidad de solicitudes que puede procesar a la vez.

Solución: combina los flujos de trabajo que usan el mismo activador en un único flujo. Así también controlas cuándo se ejecuta cada uno para que no entren en conflicto. Combinar flujos es especialmente útil si no recuperan muchos datos o si los datos que recuperan son los mismos. Si los flujos recuperan muchos datos distintos, puede que mantenerlos por separado ofrezca un mejor rendimiento.

Uso de listas o datos incorrectos

Cuando creas un flujo de trabajo, puedes usar una lista de objetos, como productos o pedidos. Si usas una lista de objetos, Flow recupera todos los objetos de la lista. Esto puede ser un problema cuando la lista contiene muchos datos.

Otro problema común es seleccionar por error los datos equivocados. Por ejemplo, para verificar datos de producto en un pedido, podrías haber seleccionado order / publication / products / tags en lugar de order / line items / product / tags. El primer resultado suele ser incorrecto, porque recupera todos los productos de una publicación cuando la intención es revisar los productos del pedido. Elegir una lista tan grande puede causar problemas de rendimiento y elegir la lista incorrecta puede hacer que la automatización haga lo que no corresponde.

Solución: selecciona con cuidado los datos que necesitas y evita usar listas cuando no sean necesarias. Prueba los flujos de trabajo para asegurarte de que hacen lo esperado.

Metacampos

Recuperar datos de un metacampo o metaobjeto individual no debería causar problemas de rendimiento. Sin embargo, es común elegir la lista metafields y recorrer todos los metacampos de un recurso. Si un campo value contiene muchos datos (por ejemplo, cuando se usan objetos HTML), esto puede implicar procesar una gran cantidad de datos y provocar problemas de rendimiento.

Solución: usa el objeto metafield en lugar de metafields.

Uso excesivo de las acciones Obtener datos

Los flujos de trabajo que usan una acción Obtener datos, como Obtener datos del pedido, están diseñados para devolver un máximo de 100 objetos por flujo con las acciones Obtener datos. Superar los 100 objetos puede causar problemas de rendimiento.

Solución: ejecuta el flujo con más frecuencia para que la consulta no tenga que devolver más de 100 resultados. Reutiliza la misma acción Obtener datos en lugar de hacer consultas repetidas.

Acciones Obtener datos sin filtros de consulta

Las acciones Obtener datos llaman a Shopify API. Si no hay consulta, la API devolverá todos los recursos o ninguno. Esto puede causar problemas de rendimiento, y también puede provocar que se tomen acciones equivocadas en la tienda cuando uses los datos devueltos más adelante en el flujo.

Solución: incluye siempre filtros de consulta en las acciones Obtener datos.

Filtros de consulta incorrectos en acciones Obtener datos

Las consultas de Obtener datos admiten un conjunto limitado de filtros de consulta, una sintaxis específica y un conjunto específico de valores que pueden usarse en los filtros. Ingresar un filtro, un valor de filtro o una sintaxis incorrectos puede hacer que se ignore toda la consulta, lo que provoca problemas similares a cuando no hay ningún filtro de consulta.

Solución: usa la documentación que ofrece la acción en Flow para encontrar la lista de filtros de consulta disponibles. Prueba siempre tus filtros de consulta para asegurarte de que devuelven los datos esperados. Puedes usar una acción Registrar salida en Flow para revisar los datos devueltos, o llamar directamente a la Shopify Admin API a través de un cliente de API como Postman o mediante la app GraphiQL.

Otras soluciones para problemas de rendimiento frecuentes

Usa pasos de espera para retrasar la obtención de datos

Los pasos de espera permiten pausar un flujo de trabajo durante un tiempo determinado, pero también pueden usarse para optimizar los flujos. Cada paso de espera divide, en la práctica, la ejecución del flujo en fases separadas. Cuando se ejecuta el flujo, recupera automáticamente los datos que se necesitan hasta el primer paso de espera (y vuelve a recuperar datos después del paso de espera para el resto del flujo).

Si un flujo usa un activador de alto volumen y recupera muchos datos, pero solo toma acción de forma ocasional, puedes colocar cualquier dato o lógica compleja después de un par formado por una condición y un paso de espera. Por ejemplo:

  1. Activador: cambio en la cantidad de inventario de la variante de producto.
  2. Condición: verifica si el producto pertenece a una colección.
  3. Si es verdadero, acción: esperar 2 segundos.
  4. Acción: enviar un correo electrónico al cliente (con muchos datos).

En este ejemplo, los datos necesarios para el paso 4 solo se consultan después de que finaliza el paso de espera. Si la condición suele ser falsa, el flujo se ejecutará más rápido y de forma más eficiente.

Qué no optimizar

Uso de los mismos datos en varias acciones

Cuando usas el mismo campo en varios pasos, Flow analiza el uso de esos campos y solo recupera esos datos una vez. Esto significa que puedes usar los datos tantas veces como quieras sin preocuparte por el rendimiento.