我有一个ASP.NET网站,我正在使用Quartz做一些后台工作。 Quartz作业设置为每5分钟触发一次。
将石英:
如果答案是#2,是否有办法让作业一直运行?
答案 0 :(得分:4)
在某些时候,在一段时间不活动之后,您的IIS托管应用程序将处于某种“休眠模式”状态。从现在开始,您的触发器不再启动作业,直到您的应用程序被尝试访问它的用户重新激活。
以下是您可以使用的解决方案:
在单独的Windows服务中运行您的工作。需要一些重构工作,但显然是最安全的解决方案
Hangfire是另一个.Net后台作业库。这是他们通过Making ASP.NET application always running向用户提供的解决此问题的链接。请注意,您需要完全控制托管环境才能实现此目的。
您可以将某项服务设置为Pingdom,以防止您的网站陷入此“睡眠模式”状态。 但是,我不建议使用此解决方案。
请注意,在您的应用进入“睡眠模式”之前所需的时间可以从一个环境变为另一个环境。如果在您的情况下它需要超过5分钟(每个作业之间的时间),此过程可能足以保持您的网站。事实上,它将作为解决方案#3(使用外部服务以频繁的速度戳你的环境)