【发布时间】:2016-06-21 06:46:06
【问题描述】:
我有一个 ASP.NET 网站,我正在使用 Quartz 做一些后台工作。 Quartz 作业设置为每 5 分钟触发一次。
威尔石英:
- 在最后一个用户离开后继续在后台运行 网站?
- 在某个时间点停止,并在新用户进入网站时继续?
如果答案是 #2,有没有办法让作业一直运行?
【问题讨论】:
标签: asp.net quartz.net
我有一个 ASP.NET 网站,我正在使用 Quartz 做一些后台工作。 Quartz 作业设置为每 5 分钟触发一次。
威尔石英:
如果答案是 #2,有没有办法让作业一直运行?
【问题讨论】:
标签: asp.net quartz.net
在某些时候,在一段时间不活动之后,您的 IIS 托管应用程序将陷入某种“睡眠模式”之王。从此刻起,您的触发器将不再启动作业,直到您的应用被尝试访问它的用户重新激活。
这里有一些可供您使用的解决方案:
在单独的 Windows 服务中运行您的作业。需要一些重构工作,但显然是最安全的解决方案
Hangfire 是另一个 .Net 后台作业库。这是他们提供给用户以解决此问题的链接,Making ASP.NET application always running。请注意,您需要完全控制您的托管环境才能实现这一目标。
您可以将某些服务设置为Pingdom,以防止您的网站陷入这种“睡眠模式”。 但是,我不推荐这种解决方案。
请注意,您的应用进入“睡眠模式”所需的时间可能会从一个环境更改为另一个环境。如果在您的情况下它需要超过 5 分钟(每个工作之间的时间),这个过程可能足以让您的网站保持正常运行。事实上,它可以作为解决方案 #3(使用外部服务频繁地戳你的环境)
【讨论】: