如何为Azure功能打开"永远在线"?

Mat*_*ias 19 f# azure-functions timer-trigger

我有一个功能应用程序有3个功能,其中一个定时器每2分钟触发一次.我观察到一段时间后,该函数停止被触发,但是当我进入门户时重新启动.

据我了解,原因是默认情况下,"Always On"已关闭.但是,当我转到应用程序设置/常规设置时,我无法激活灰色的"开启"状态.我可以取消选中"关闭",这似乎不会粘住或激活"开启".

在此输入图像描述

我错过了一些明显的东西吗 是永远 - 解决我的问题的解决方案,还是我应该做的其他事情?

注意:函数是用F#编写的; 我怀疑这很重要,但我想我会提到它以防万一.

Dav*_*bbo 33

此答案适用于所有Azure功能方案,但http请求触发的方案除外.

有3个案例要看:

  1. 您有一个在免费/共享应用服务计划中运行的功能应用程序:Always On不可用,并且这些方案根本不受支持.
  2. 您有一个在基本/标准/高级应用服务计划中运行的功能应用程序:始终开启,可以打开.实际上它默认处于启用状态,如果将其关闭,您将在功能UI中收到警告.
  3. 您有一个使用消费计划的功能应用程序:不需要Always On,因为系统负责在需要运行时唤醒您的功能.这是大多数用户的推荐方法.

  • “应用服务计划:始终开启可用......事实上它是默认开启的”;这不是我发现的,不是从 ARM 部署时发现的。您必须在模板中设置 `"alwaysOn": true`。根据 https://docs.microsoft.com/en-us/azure/azure-functions/functions-infrastructure-as-code#deploy-a-function-app-on-the-app-service-plan (2认同)
  • 有什么改变吗?因为我将函数应用程序从模板部署到高级计划,根本没有定义始终打开,并将其设置为 false。此外,在门户中找不到该选项。仅显示: 平台托管管道版本 FTP 状态 HTTP 版本 这是 v3 (2认同)

log*_*kai 5

Azure Functions 由 Azure App Service 一起管理,该服务将始终开启限制为Basic 或更高级别的模式(无免费或共享)

在基本或标准模式下,您可以启用 Always On 以始终保持应用程序加载。


Kis*_*ari 5

如果您使用免费/共享应用程序服务计划,您可以进行一些小修改,并且效果很好。使用像 freshping.io 这样的 ping 服务,每 5 秒/自定义间隔对您的函数 url 进行 ping 操作,从而防止您的应用程序处于空闲状态。Freshping.io 为您提供 5 个免费 ping 网址。

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

希望这可以帮助。