Azure Function Apps 中全局变量的替代方法是什么?

What is the alternative to global variables in Azure Function Apps?

假设我想要一个 TimerTrigger 函数应用程序,它每 10 秒执行一次并打印递增的计数 (1...2...3...), 如何在不使用环境变量的情况下实现此目的?

您已经在为函数使用 Azure 存储帐户。在该存储帐户中创建一个 table,并在那里增加计数器。这具有跨功能重启持久存在的额外好处。

由于您使用的是 TimerTrigger,这意味着函数 运行 将永远只有一个实例。如果不是这种情况,您最终可能会陷入竞争状态,两个或更多实例交错,从而错误地增加您的计数器。

我建议你研究一下 Durable Functions。这是 Azure Functions 的扩展,允许在您的(协调器)函数中显示状态。

在您的情况下,您可以有一个 HTTP 触发的启动函数来启动一个长 运行 编排器函数。 HTTP 函数将初始 count 值传递给协调器函数。您可以使用 Durable Functions 的 Timer functionality 让协调器在 continuing/restarting 之前等待指定的时间量。计时器到期后,count 值会递增,您可以通过调用 ContinueAsNew 方法使用这个新的 count 值重新启动 orchestrator 函数。

This periodic work example 几乎就是你所需要的。您仍然需要添加初始 count 以作为输入读取,并在调用 ContinueAsNew 方法之前将其递增。

如果您需要有关 Durable Functions 的更多详细信息,我有 quite some videos 解释这些概念。