avi*_*oni 0 c# azure .net-core azure-functions azure-durable-functions
持久函数是否会在活动被调用之前唤醒?
我是关于实现调度程序的,而是使用其他库,例如 Hangfire 或 Quartz。我想实现作为调度程序的持久功能。我缺少的部分是,函数中发生了什么?该函数是否在下一次活动调用之前大喊大叫?每一项都叫执行?
[FunctionName("SchedulerRouter")]
public static async Task<HttpResponseMessage> HttpStart(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")]HttpRequestMessage req,
[OrchestrationClient]DurableOrchestrationClient starter, ILogger log)
{
var data = await req.Content.ReadAsAsync<JObject>();
var instanceId = await starter.StartNewAsync(FunctionsConsts.MAIN_DURABLE_SCHEDULER_NAME, data);
return starter.CreateCheckStatusResponse(req, instanceId);
}
Run Code Online (Sandbox Code Playgroud)
看起来您将执行时间与最大不活动时间混淆了 Azure 函数:
Durable 函数只与单个调用的最大执行时间有关。对于“开箱即用”功能,该超时为 10 分钟,对于持久功能,此限制将被删除。它还引入了对有状态执行的支持,这意味着对同一函数的后续调用可以共享局部变量和静态成员。这是“开箱即用”功能模式的扩展,它需要一些额外的样板代码才能使一切按预期工作。更多详细信息:https : //docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-overview
持久函数和普通函数共享相同的计费模式,因此持久函数也会发生冷启动,尤其是在消耗计划中运行时。
在消耗计划中运行的 Azure 函数将在不活动期间关闭,然后在新请求到达时重新分配和重新启动,这称为:冷启动。您可以缓解这种情况,构建一个计时器触发功能,每 5 到 10 分钟唤醒一次您的功能。但是,如果您的主机被 Azure 自动放大或缩小,您仍然会不时地发生冷启动。如果您想完全消除冷启动的可能性,则必须转向应用服务计划。附带说明一下,Azure 中的函数应用在设计上是无状态的,你应该考虑到这一要求来实现你的逻辑。
归档时间: |
|
查看次数: |
2152 次 |
最近记录: |