![](/img/trans.png)
[英]How to handle long running jobs that are posted to a service bus with only 5min peek lock
[英]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.