如何为 Azure 函数启用 "always-on"?

How do I turn on "always-on" for an Azure Function?

我有一个具有 3 个功能的功能应用程序,其中一个功能每 2 分钟触发一次。我观察过一段时间后,该功能停止触发,但在我进入门户时重新启动。

据我了解,原因是默认情况下,"Always On"是关闭的。但是,当我进入应用程序设置/常规设置时,我无法激活呈灰色显示的 "On" 状态。我可以取消选中 "Off",它似乎不会粘住或激活 "On"。

我是不是遗漏了什么明显的东西? Always-On 是我的问题的解决方案,还是我应该做的其他事情?

注意:函数是用F#写的;我怀疑这是否重要,但我想我会提一下以防万一。

Azure Functions 由 Azure 应用服务共同管理,该服务始终限制为 Basic or above(无免费或共享)

模式

In Basic or Standard mode, you can enable Always On to keep the app loaded all the time.

此答案适用于所有 Azure Function 场景,由 http 请求触发的场景除外。

有3个案例可以看:

  1. 您在 Free/Shared 应用服务计划中有一个功能应用 运行ning:Always On 不可用,根本不支持这些场景.
  2. 您在 Basic/Standard/Premium 应用服务计划中有一个功能应用 运行ning:Always On 可用并且可以打开。事实上它是默认打开的,如果你关闭它,你会在函数 UI 中收到警告。
  3. 您有一个使用消耗计划的功能应用程序:不需要始终开启,因为系统会在需要时唤醒您的功能运行.这是大多数用户的推荐方法。

如果您使用的是 free/shared 应用服务计划,您可以做一些小改动,而且效果很好。使用像 freshping.io 这样的 ping 服务,它每隔 5 secs/custom 间隔 ping 你的函数 url,以防止你的应用程序空闲。 Freshping.io 给你 5 个免费的 url 秒来 ping。

注意:ping url 不计入 CPU 运行 时间,除非您 ping 实际函数。所以它不会影响你的时间限制。

希望对您有所帮助。