我有一个运行时间非常长的进程,该进程是使用面向v2.0的Azure Function App(尽管不建议长时间运行的进程)托管的。早些时候它的目标是v1.0运行时,所以我没有遇到任何函数超时问题。
但是现在在将运行时更新为目标v2.0之后,我无法找到任何方法来将函数超时设置为Infinite,就像在v1.0中一样。
有人可以帮我吗?
答案 0 :(得分:3)
从您的评论看来,目前您无法选择拆分成较小的功能或使用除功能以外的功能。在这种情况下,只要您准备使用“应用服务计划”,AFAIK仍然可以在v2.0中使用。
最长10分钟的限制仅适用于“消费计划”。
事实上,文档明确表明,如果您具有连续运行或几乎连续运行的功能,那么App Service Plan也会更具成本效益。
您可以使用“始终打开”设置。在此处阅读有关Microsoft文档的信息。
Azure Functions scale and hosting
此外,文档明确指出,App Service计划的超时默认值为30分钟,但可以手动将其设置为无限。
Changes in features and functionality
更新
根据我们在注释中的讨论,由于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功能并不适合长时间运行的进程。您可能需要为您的应用找到新的解决方案,尤其是如果将来将来需要扩展应用时。