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 解释这些概念。
假设我想要一个 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 解释这些概念。