【问题标题】:Azure Function calls itself after 3 minutesAzure Function 在 3 分钟后调用自身
【发布时间】:2017-10-03 07:51:03
【问题描述】:

我的 azure 函数中有以下代码,手动超时 5 分钟。

当我在 azure 中运行上述函数时,我看到该函数在 3 分钟后创建了一个新实例。(查看下图) 两个实例都成功完成,但返回 Status: 504 Gateway Timeout ,这反过来又使我的函数执行失败。 我在 App Service Plan 中托管了该功能,并将 host.json 文件中的超时时间增加到 10 分钟

"functionTimeout": "00:10:00"

【问题讨论】:

  • 触发器是如何定义的?
  • 我已经使用了 http 触发器的功能。
  • @ABaig 正如 mag_zbc 建议的那样,请不要发布代码和函数输出的位图。这使得使用它变得更加困难。例如如果不手动复制调用 ID,就没有简单的方法来获取它们。
  • 另外,请澄清您是如何调用该函数的,以及是什么让您相信该函数正在调用自身。
  • 永远不要将代码作为图片发布。请编辑您的问题,删除图像并将代码添加为文本。 Why may I not upload images of code on SO when asking a question?

标签: azure azure-functions


【解决方案1】:

这里有几个问题:

  1. Timeouts - host.json 中的函数超时适用于底层函数运行时;不是http管道。您不应该让 http 函数运行超过一分钟。 http 调用将独立于运行时超时(如您在 504 中看到的那样)。但是,您可以将该超时用于长时间运行(即,appservice 计划上的 60 分钟)队列触发器。如果您需要一个长时间运行的函数,http 调用可以将消息排队等待队列触发器,或者您可以使用 Durable Function 支持。

  2. 为什么会再次调用?这里最简单的解释是您的函数只是接收到第二条 http 请求消息。你有证据表明不是吗?您可以绑定到 HttpRequestMessage 并记录额外的 http 请求属性以跟踪它。

【讨论】:

  • 我应该为我的函数使用不同的触发器吗?你能提出任何建议吗(实际上需要为我长期运行的网络作业实现天蓝色函数。上面的函数是我正在尝试的示例。)以及关于调用再次,我在 azure 门户中测试该功能,因此仅手动调用一次。
猜你喜欢
  • 1970-01-01
  • 2011-12-13
  • 1970-01-01
  • 1970-01-01
  • 2021-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多