首页 > 解决方案 > Azure Functions:运行时如何更新活动实例?

问题描述

当开发人员将更新推送到他们的Functions代码库时,运行时是否会停止Function应用程序中的所有活动实例(作为高级计划托管),然后全部更新并最终重新启动它们?或者更新是否像 stop-update-restart 单个实例一样逐个推出到实例并继续到队列中的下一个?

标签: azureazure-functionsazure-functions-runtime

解决方案


将函数更新代码从本地部署到 Azure 时,有两个步骤。首先是更新代码,其次是重新启动函数应用程序。这是我在我身边测试的内容:

我在一个功能应用程序(带有高级计划)中有两个功能,名为Function1Function2. 两个函数中的代码几乎相同,如下图所示。 在此处输入图像描述

在此处输入图像描述

现在请求两个函数的url来触发(先触发Function1再触发Function2,间隔1秒)。他们将打印如下截图(从 1 到 79)的日志: 在此处输入图像描述

现在我编辑本地函数代码并在日志打印到79之前发布到azure。在部署过程中,两个函数仍然正常打印日志,直到函数应用重启(请参考下面的两个截图)。 在此处输入图像描述 在此处输入图像描述

根据测试,我们可以知道在部署过程中代码更新到函数应用重启时,函数可以正常运行。您的问题的答案是部署将更新所有功能代码并最终重新启动功能应用程序(仅重新启动一次)

==================================更新================ ================

对于你的问题If the scale controller scales to multiple active instances in the same app, how are updates rolled out to each instance?。我认为它会在更新代码时允许实例运行,但是当更新代码完成后,函数应用程序将重新启动,所有正在运行的实例将在重新启动函数应用程序时中断。

对于你的问题When the function app restarts, does it create only one instance or as many as the instance count before the restart?。我不认为函数应用程序会在重新启动之前创建与实例数一样多的实例。正如您所提到的,该功能是高级计划的主机。因此,函数应用重新启动后,它只会提供您在“横向扩展”选项卡中为“始终就绪实例”设置实例 。 关于“Always ready 实例预热实例”的更多信息,您可以参考此文档在此处输入图像描述


推荐阅读