Azure WebJobs - 托管在哪里?它们作为长期运行的过程是否安全?

pio*_*est 5 c# iis azure azure-web-sites azure-webjobs

Azure WebSite Always OnAzure Web站点上"Always On"设置的含义我假设Azure WebJobs托管在IIS中并使用IIS资源(以及我们的网站资源).

此外,在定价页面:http://azure.microsoft.com/en-us/pricing/details/websites/有一个声明:

按需,按计划运行自定义可执行文件和/或脚本,或作为Web站点实例中的后台任务连续运行.连续WebJobs执行需要Always On.计划的WebJobs需要Azure Scheduler Free或Standard.

因此我认为这是真的.实际上Azure WebJobs托管在Azure网站的IIS中.注意:WebJobs可以连续且长时间运行.

然而,令我担心的是,执行长时间运行的进程/后台进程通常被视为反模式:

那么Microsoft Azure提出了一些看似反模式的东西吗?附加问题:然后将Quartz.NET作为连续任务运行并进行"免费"简单后台任务调度会是一个好主意吗?

Chr*_*SFT 8

我会尝试分别解决你的两个问题.

1. WebJobs在哪里举办?

给定的WebJob存在于Web App(或Mobile/API App)中.每个站点都有一个运行Kudu的实例,它管理部署,IIS等对我们来说很重要的WebJobs.因此它托管在Web应用程序中,但它不一定由IIS管理,它由管理IIS for Web Apps的相同事物管理.所有这些都可以在Kudu GitHub中查看.

2.长期运行过程是否安全?

它们和任何长期运行的过程一样安全,因为它们不是自己的.如果您只是将控制台应用程序作为连续作业上传并使其在while循环中运行,则可能因任何原因随时崩溃.随着"永远在线",Kudu将永远清醒再次启动它.

如果您需要一定程度的保证可以执行并且不丢失,请尝试查看WebJobs SDK.它实际上将跟踪Jobs的失败/成功,并使用存储队列来跟踪历史记录,允许重试和正常模式进行处理,如有害消息等.