嵌套逻辑应用程序重试 - 父级抛出 504

Nested logic app retries - parent throwing 504

我有一个嵌套的逻辑应用程序,它需要一些时间来重试 4 次以防失败。根据文档,默认 HTTP 超时为 100 秒。我能够在触发父逻辑应用程序的代码中增加 HTTP 客户端超时值,但如果子逻辑应用程序出现故障,它会重试 4 次并且需要更长的时间。同时,父逻辑应用响应 504(网关超时)。在子逻辑应用程序 return 响应后还有一些操作需要处理,因此我无法使其异步和 return 202 到代码触发器。有没有办法在不使其异步的情况下增加嵌套逻辑应用程序的超时?

例如- 我的嵌套逻辑应用程序重试 4 次并在 4 分钟后失败

但是,我的代码在触发父逻辑应用 2 分 9 秒后已经收到 504 的响应

触发父逻辑应用的 HTTP 客户端超时为 20 分钟。我验证了此超时值是否有效,因为没有它,我们将在 1 分 40 秒(100 秒)内收到超时响应,这是默认的 HTTP 触发器超时。我的印象是,如果嵌套逻辑应用程序在触发后 100 秒内也没有响应,则父级会抛出超时,因为它没有收到响应。 有没有办法解决这个问题?

如果没有异步模式或异步调用可能无法实现,但解决方法之一是使用 HTTP+Webhooks,您可以在其中设置超时值。

您可以从 HERE 进一步研究。

我发现 A​​zure 对传入的 HTTP 请求有一个超时值并且连接不能保持打开超过 2 分钟 .这与 100 秒的 HTTP 客户端超时不同。因此,即使我增加了 HTTP 客户端超时,Azure 逻辑应用程序也无法将传入连接保持打开状态超过 2 分钟,因此引发了 504 网关超时。

由于我的逻辑应用需要超过 2 分钟才能完成 运行,为了解决这个问题,我开始使用异步轮询机制,通过使用 202(已接受)响应传入的 HTTP 请求,并且然后每 3 分钟从我的代码中轮询此响应中发送的位置,直到响应状态!= 202.

据我了解,上述使用 HTTP webhooks 的解决方案也可能有效,因为当我们使用 webhooks 时,客户端计时器会暂停。然而,这对我来说是不可能的,所以我不得不改变我的设计并使用异步轮询模式。