gpt4 book ai didi

python - Azure Durable Function 可以运行多长时间?

转载 作者:行者123 更新时间:2023-12-03 07:05:39 35 4
gpt4 key购买 nike

我有多个 ETL 类型的任务,我计划执行无服务器。任务的执行时间从 5 到 30 分钟不等(取决于实例的数据量)。由于函数的超时时间为 10 分钟,因此这些任务无法在一个函数中一起执行。我最近在 Azure 中发现了 Durable Functions,用于编排不同的函数。我想知道 Durable 函数是否也有 10 分钟的超时,或者我可以在其中包含多个函数(每个函数运行 3-5 分钟)。

例如,任务 1 需要 3 分钟,任务 2 需要 5 分钟,任务 3 需要 7 分钟,任务 4 需要 3 分钟,任务 5 需要 2 分钟。我可以将所有这些任务编排在一个持久函数中吗?

我目前的做法是为每个任务分别提供一个队列触发功能,但这种工作流程非常困惑。我认为耐用的功能最适合简化工作流程。

最佳答案

Can I have all these tasks orchestrated in a single durable function?

简而言之:是的。但这里有一些背景。

Durable Functions is an extension of Azure Functions that lets you write stateful functions in a serverless compute environment. The extension lets you define stateful workflows by writing orchestrator functions and stateful entities by writing entity functions using the Azure Functions programming model. Behind the scenes, the extension manages state, checkpoints, and restarts for you, allowing you to focus on your business logic.

听起来您的场景最适合函数链模式。

Function chaining

In the function chaining pattern, a sequence of functions executes in a specific order. In this pattern, the output of one function is applied to the input of another function.

A diagram of the function chaining pattern

代码相对简单:

[FunctionName("Chaining")]
public static async Task<object> Run(
[OrchestrationTrigger] IDurableOrchestrationContext context)
{
try
{
var x = await context.CallActivityAsync<object>("F1", null);
var y = await context.CallActivityAsync<object>("F2", x);
var z = await context.CallActivityAsync<object>("F3", y);
return await context.CallActivityAsync<object>("F4", z);
}
catch (Exception)
{
// Error handling or compensation goes here.
}
}

此示例中的每个单独的功能(F1 到 F4)都是它自己的函数。这意味着它有自己的超时时间。

请注意,不同类型的托管计划可能是更适合您问题的解决方案。看看Azure Functions hosting options - Service limits查看选项及其各自的(超时)限制。

关于python - Azure Durable Function 可以运行多长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71466092/

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