繁体   English   中英

如何处理Azure App Service中长期运行的作业?

[英]How do I handle long running jobs in Azure App Service?

我对于在Azure中托管是相当陌生的。 我有一个.net 4.6 Web应用程序,作为应用程序服务在Azure中运行。

该解决方案包含一些动作,这些动作会持续很长时间。 它们在230秒超时后停止,这似乎是Azure事物。

我了解到,应将此代码放在Azure函数中,以使其作为后台作业运行。 只要我不使用“消费”计划,此处就不应超时。

我还在解决方案中使用Azure存储。

我的问题是,如果我使用Azure Functions v1(NuGet Microsoft.NET.Sdk.Functions v1.0.24),则不得不使用Newtonsoft.Json版本= 9.0.1,同时NuGet WindowsAzure.Storage需要Newtonsoft.Json版本> = 10.0 0.2

这对我来说很糟糕。

然后,我试用了Azure Functions v2。 但是它仅支持.Net Core,这不是我在该项目中的选择。

我的主要问题仍然是找到一种方法来运行这些长期运行的任务。

一种方法是将工作分解成较小的部分,但是在这种情况下,我想在同一请求中处理它。

检查您的hosts.json中是否没有配置超时。

"functionTimeout": "00:05:00"

V1和V2的完整配置选项在此处记录

在消费计划中,最大超时时间为10分钟。 在应用服务计划中,它可以是不确定的(但即使只是1或2个小时,也要设定上限)。

如果您想破坏功能,可以找到合适的“ 耐用功能”模式

关于您的Newtonsoft冲突,请查看是否可以使用绑定重定向解决此问题。

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
            <bindingRedirect oldVersion="0.0.0.0-9.9.0.0" newVersion="10.0.2.0"/>
        </dependentAssembly>
    </assemblyBinding>
</runtime>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM