如何为Azure Function应用v2.0设置无限超时

时间:2018-10-23 16:44:58

标签: azure timeout azure-functions

我有一个运行时间非常长的进程,该进程是使用面向v2.0的Azure Function App(尽管不建议长时间运行的进程)托管的。早些时候它的目标是v1.0运行时,所以我没有遇到任何函数超时问题。

但是现在在将运行时更新为目标v2.0之后,我无法找到任何方法来将函数超时设置为Infinite,就像在v1.0中一样。

有人可以帮我吗?

3 个答案:

答案 0 :(得分:3)

从您的评论看来,目前您无法选择拆分成较小的功能或使用除功能以外的功能。在这种情况下,只要您准备使用“应用服务计划”,AFAIK仍然可以在v2.0中使用。

最长10分钟的限制仅适用于“消费计划”。

enter image description here

事实上,文档明确表明,如果您具有连续运行或几乎连续运行的功能,那么App Service Plan也会更具成本效益。

您可以使用“始终打开”设置。在此处阅读有关Microsoft文档的信息。

Azure Functions scale and hosting

enter image description here

此外,文档明确指出,App Service计划的超时默认值为30分钟,但可以手动将其设置为无限。

Changes in features and functionality

enter image description here

更新

根据我们在注释中的讨论,由于null值无法像1.x版本中那样对您有效,因此请尝试完全删除“ functionTimeout”设置。

我遇到了2个不同的SO帖子,它们提到了类似的内容,并且Microsoft文档文本还说没有实际限制。这是我遇到的SO帖子的链接:

答案 1 :(得分:1)

一种实现方法是实现Eternal orchestrations from Durable Functions。它允许您实现具有动态间隔的无限循环。当然,您需要随时通过添加对停止/启动功能的支持来稍微修改代码(必须在两次调用之间传递状态)。

[FunctionName("Long_Running_Process")]
public static async Task Run(
    [OrchestrationTrigger] DurableOrchestrationContext context)
{
    var initialState = context.GetInput<object>();
    var state = await context.CallActivityAsync("Run_Long_Running_Process", initialState);

    if (state == ???) // stop execution when long running process is completed
    {
        return;
    }

    context.ContinueAsNew(state);
}

答案 2 :(得分:0)

您不能将Azure Function App超时设置为无限。我相信,天蓝色功能应用程序能持续运行的最长时间是10分钟。如您所述,Azure功能并不适合长时间运行的进程。您可能需要为您的应用找到新的解决方案,尤其是如果将来将来需要扩展应用时。

相关问题