对 Flow 错误和使用限制进行故障排除

此文档介绍了常见错误和限制、发生原因以及解决方法。在 Flow 中,您可能遇到两种类型的错误:永久性错误和暂时性错误。

编辑工作流时出错

编辑工作流时,您可能会遇到阻止您保存工作流的错误。以下是在编辑工作流时可能会遇到的常见错误:

找不到数据

向工作流添加新操作时,您可能会遇到显示 Data not found 的错误,例如 Customer data not found。此操作所需的数据不可用时,会出现此错误。例如,如果您要添加需要产品 ID 的操作,则此错误意味着您的工作流尚未提供可用产品。

通常,此数据由触发器或“获取数据”操作提供。如果使用“获取数据”,则一个常见问题是该操作需要单个项目(客户),但其提供了一个列表(客户列表)。若要调用操作,您必须添加一个 For each 操作来循环遍历列表并为列表中的每个项目调用操作。

有关触发器数据的问题,请查阅操作对应的文档,以查找提供正确数据的触发器。

运行工作流时出错

当工作流运行遇到错误时,工作流运行被标记为失败。工作流运行详细信息中会显示错误消息。以下是工作流运行失败时可能会遇到的常见错误:

暂时性错误

暂时性错误是 Flow 无法完成任务时发生的临时错误。系统会重试这些错误,直到成功或达到超时限制为止。例如,如果 Flow 在执行连接器操作时无法联系合作伙伴,则 Flow 会多次重试此任务,直到放弃为止。

重试会逐渐展开,每次后续尝试的延迟时间都会比前一次延迟的时间更长。通常,当工作流遇到暂时性错误时,在重试任务时,它仍会长时间处于运行状态。

成功重试任务后,工作流将继续。如果重试的任务遇到永久性错误,则工作流将失败。每个工作流部分的累计执行时间上限为 36 小时。如果某个具有暂时性错误的步骤在达到该限制之前未成功,则工作流将失败。

具有等待步骤的工作流将被分为多个部分,这会影响工作流中超时限制的计算方式。每个部分都包含一组一起执行的任务,而每个部分都有各自的 36 小时时间限制。例如,如果工作流等待步骤的等待时间为一个小时,则等待步骤之前的任务将在一个部分中一起执行,而等待步骤之后的任务将在另一个部分中一起执行。如果工作流有多个等待步骤,则每个等待步骤之间的任务将在一个部分中一起执行。没有等待步骤的工作流将被视为一个部分。

偶尔出现暂时性错误是常见情况。但是,如果您的工作流在多次运行中始终遇到相同的暂时性错误,则可能需要重新配置工作流。

步骤超时

Step timed out 当工作流中的某个任务尝试在一个部分中查询过多数据时,通常会出现错误。此错误经常发生在迭代较大列表(特别是嵌套列表)而无法及时获取数据的工作流中。

当工作流遇到此错误时,触发器或等待步骤将显示为 retrying

若要解决此问题,请检查访问列表和嵌套列表的任何条件,以确保其正确无误。一个常见问题是条件会检查商店中的所有产品,而不是仅检查某一订单中的产品。

5xx 状态

大多数 Flow 操作都涉及 HTTP 调用。有时,网络或其他服务器问题可能会导致 HTTP 调用失败,并返回 500 到 599 之间的错误代码。出现一次此类错误不是问题,但重复出现可能表示处理任务的服务器存在问题,而不是步骤的配置方式存在问题。

发送 HTTP 请求操作中最常出现此类错误,但大多数任务中都可能出现此错误。

GraphQL 被限制

工作流完成的工作总量受 API 频率限制的限制,您的套餐是此限制的部分决定因素。通常,除非工作流很复杂或存在意外设计错误,否则不会达到这些限制。下方是可能导致此错误的情况示例:

  • 工作流中的 Liquid 或条件遍历包含大量数据的列表,例如检查包含 HTML 的元字段值。
  • 工作流中的 Liquid 或条件遍历大型列表,例如遍历大型商店中的 shop.orders
  • 工作流导致无限循环,其中工作流会一直创建新的工作流运行。例如,如果工作流使用已添加客户标签触发器并包含添加客户标签操作,则可能发生这种情况。

如果达到了限制,您将收到 GraphQL throttled 错误。此错误可能会影响其他尝试运行的工作流,因此发生此错误时应立即进行解决。

永久性错误

永久性错误是 Flow 无法完成任务并且无法重试任务时发生的错误。例如,如果 Flow 因邮箱无效而无法发送电子邮件,则它不会重试任务。工作流将失败。

字段:ID 必填但为空

大多数 Shopify 操作都需要一项或多项资源(例如产品、客户或订单)才能运行。有时资源不可用,因此操作无法如预期运行。例如,可能在“后台”中创建没有客户的订单。如果您尝试运行操作,例如添加客户标签,则操作将因此错误而失败。

为防止出现错误,您可以在操作之前添加条件,以检查资源是否存在。在上一个示例中,如果您想在添加客户标签的同一工作流中发送内部电子邮件,则您可以在可能失败的步骤之前放置该操作,也可以执行以下操作之一。

将操作放入并行分支(其中的两个或多个分支来自一个步骤)

并行显示两项操作的示例

在操作前添加条件以检查客户是否存在。例如,您可以检查是否 order / customer / id is not empty and exists

显示查找 ID 的条件的示例

Flow 不具有访问您 Google 表格账户的权限。请重新连接您的账户。

Google 表格连接器要求您将 Google 账户链接到 Flow,然后才能获得写入表格的权限。当 Flow 无权写入表格时,可能会出现此错误,原因可能是账户已与 Flow 断开链接,或者该账户无法访问该表格。

若要解决此问题,请确保用于连接器的账户可以打开表格并拥有编辑访问权限。如果链接了错误的账户,您可以断开账户连接并连接新账户。

步骤:
  1. 打开或创建新工作流。
  2. 添加操作。
  3. 选择 Google 表格连接器。
  4. 点击断开连接,然后点击连接

收到的 Flow 操作具有无效属性。客户不接受营销。

发送营销电子邮件操作不会向未同意接收电子邮件的客户发送电子邮件,如果工作流尝试这样做,则操作将永久性失败。

若要解决此问题,请添加工作流中添加检查客户订阅状态的条件。在发送营销电子邮件之前,您可以确保客户已同意接收这些电子邮件。按照电子邮件订阅者列表管理中的步骤操作。

缺少 [资源类型] 的资源

此错误表示资源(例如 customerorder)在工作流提取其数据之前已被删除。大多数情况下,此错误在等待步骤之后发生,但如果资源在触发器事件发生后非常快速地被删除,则触发器上也可能发生此错误。

在出现错误时接收通知

如果出现错误会影响您的商店运营,您可以设置要在发生错误时发送的通知。与任何其他工作流相似,可以使用出现工作流错误触发器创建错误通知。错误通知旨在限制干扰,使每个工作流版本只有一次相应通知

您可以使用以下一个模板来开始设置通知:

重试运行

在某些情况下,工作流运行可能会遇到错误或未按预期运行。对相关工作流中的问题进行故障排除和修复后,可以手动重试过往运行,以便对过往运行的结果进行追溯性修复。详细了解重试工作流运行

正在运行(速率受限)

在某些情况下,一个或多个工作流可能会使用过多资源,为防止这导致出现问题,Flow 会有意限制您的商店中执行的运行,这可能会导致延迟和超时错误。可以通过重新编写效率低下的工作流来解决此问题,这通常是为了修复未按预期工作的 bug。

运行时间太长

此消息表示工作流的运行需要很长时间来执行。这通常是由于在工作流中使用了大量的数据,Flow 需要花费大量时间来获取这些数据。

示例

这些情况通常是由经过多个项目列表的深度请求路径(例如,请求产品所属的所有产品系列中的所有产品的所有元字段)引起的:

long running workflow example
这也通常与工作流超时的触发步骤相关。

循环访问所有元字段的工作流通常只能使用特定的元字段进行改进。访问多个嵌套列表(例如某个产品的所有产品系列上的所有产品)或特大列表(例如元字段定义,包含所有对象的所有元字段)的操作可能是意外执行的,选择正确的字段(一个对象上的单个产品或单个元字段)可以显著提高效率。在某些情况下,对查询筛选器使用“获取产品/订单/客户数据”操作可以显著降低使用的对象数量,但仍可以访问相关对象。

处理太多数据

此消息表示工作流的运行正在生成大量数据。这通常是由于检查许多字段的复杂条件造成的,通常是由于检查多层列表上的字段。

示例

例如,“此客户至少有一个标签、至少一个订单商品条目、订单商品上至少有一个标签”之类的条件可能会导致执行许多检查,并生成大量数据以显示这些检查的结果:

too much data workflow example

自动重试失败

此消息表示工作流的运行由于某些暂时性问题重复失败,但在随后的重试中并不经常成功。当 Shopify 的 Admin API 或合作伙伴的应用遇到大量请求时,通常会发生这种情况。

没有找到您需要的答案?我们将为您提供帮助。