【问题标题】:Alexa timeout with azure functions具有天蓝色功能的 Alexa 超时
【发布时间】:2017-09-09 10:32:06
【问题描述】:

我有一个 azure 函数正在处理对 Alexa 技能的请求,但由于 azure 函数在 10 秒内没有响应(需要 alexa 技能),我经常会超时:

请求的应用程序响应时间过长

请求标识符:amzn1.echo-api-request.xxxxx.xxx 应用程序必须在请求发送后 10 秒内做出响应。

我猜测 azure 函数应用在不活动后会被拆除,以节省类似于 azure 网站的资源。

azure 函数应用在 消费计划 下运行,我似乎找不到像 azure 网站那样始终开启的选项。

我能想到的唯一其他选择是在函数应用程序中创建一个函数来 ping 以保持 azure 函数处于活动状态。这似乎有点 hacky,所以我想知道是否有更好的方法来保持 azure 函数应用程序的活力?

【问题讨论】:

    标签: azure azure-functions alexa-skill


    【解决方案1】:

    您是正确的,因为这是消费计划的设计。如果应用程序上的所有函数在给定的时间内没有收到处理请求,则实例将被“拆除”,您必须为下一个请求“预热”接受。

    • 您可以按照您的建议“ping”一个函数来保持它的运行。做到这一点的最佳方法可能是使用基于计时器的触发器将新函数部署到同一应用程序,该触发器会立即返回。请注意,这可能会产生更多的“成本”,因为您会用尽执行时间,尽管它非常小。

    防止更改为冷启动模式非常容易。只需在每 5 分钟执行一次的同一个函数应用中添加一个时间触发函数。但请注意,如果超出您的免费执行信用额度,这可能会导致额外费用。

    Cold Start and Warm Start on Consumption Plan

    • 或者,您可以使用具有 Always On 功能的应用服务计划,但是,您可能需要权衡此方法与选项 1 的成本/收益

    如果你在应用服务计划上运行,你应该启用 Always On 设置,以便你的函数应用正确运行。在应用服务计划中,函数运行时将在几分钟不活动后空闲,因此只有 HTTP 触发器会“唤醒”你的函数。这类似于 WebJobs 必须启用 Always On 的方式。 Always On 仅适用于应用服务计划。在消费计划中,平台会自动激活功能应用。

    Always On

    【讨论】:

      猜你喜欢
      • 2022-11-02
      • 2017-05-31
      • 2020-03-22
      • 2023-04-06
      • 2018-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-18
      相关资源
      最近更新 更多