gpt4 book ai didi

c# - 如果函数的实例已在执行,计时器触发的 Azure 函数是否会执行?

转载 作者:行者123 更新时间:2023-12-02 07:17:31 25 4
gpt4 key购买 nike

我有一个带有 [TimerTrigger(...)] 属性的 Azure Function App,计划每天早上执行。

假设您通过功能菜单 Blade -> 代码 + 测试 -> 测试/运行手动执行该功能,如本消息底部所示。如果当 TimerTrigger 属性中指定的时间到达时,该函数的手动执行仍在运行,会发生什么情况?

  1. 手动执行会被定时器触发执行中断吗?
  2. 手动执行是否会阻止计时器触发函数的新执行?
  3. 或者当计时器触发该函数时,是否会启动该函数的新实例,与现有的手动执行并行运行?

enter image description here

最佳答案

您可以同时运行相同的azure函数。如果您想阻止 azure 函数当前正在运行,您可以添加一个 bool 值:

public class AzureFunction()
{
private static bool _isRunning = false;

[FunctionName("Function1")]
public async Task Run([TimerTrigger("0 30 9 * * *")]
if (_isRunning)
{
//an instance is already running, lets not continue
return;
}
_isRunning = true;

//work is being done

//after work is done
_isRunning = false;
}

假设您有一个每分钟关闭一次的计时器,但您的代码需要 2 分钟才能运行。无论上一次运行是否完成,计时器都会每分钟启动一次。

如果您将 TimerTrigger 设置为每天运行,手动运行不会中断您的日常运行或对您的日常运行造成问题,但您仍然可以在定时触发器期间进行手动运行。上述示例将在每天上午 9:30 运行。

关于c# - 如果函数的实例已在执行,计时器触发的 Azure 函数是否会执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73534084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com