当托管在 IIS (ASP.NET) 上时,Quartz 运行 在后台运行多长时间?
For how long does Quartz run in the background when hosted on IIS (ASP.NET)?
我有一个 ASP.NET 网站,我正在使用 Quartz 做一些后台工作。 Quartz 作业设置为每 5 分钟触发一次。
威尔石英:
- 运行在最后一个用户离开后持续在后台
网站?
- 在某个时间点停止,当新用户进入网站时继续?
如果答案是#2,有没有办法一直运行工作?
在某些时候,在一段时间不活动之后,您的 IIS 托管应用程序将落入 'sleep mode' 之王。从这一刻起,您的触发器将不再启动作业,直到您的应用被尝试访问它的用户重新激活。
您可以使用以下解决方案:
运行 您的工作在单独的 windows 服务中。需要一些重构工作,但显然是最安全的解决方案
Hangfire 是另一个 .Net 后台作业库。这是他们提供给用户的 link 解决此问题的 Making ASP.NET application always running。请注意,您需要完全控制托管环境才能实现此目的。
您可以将某些服务设置为 Pingdom 以防止您的站点陷入此 'sleep mode'。 但是,我不会推荐这个解决方案。
请注意,您的应用落入 'sleep mode' 之前所需的时间可能会因环境而异。如果在您的情况下它需要超过 5 分钟(您的每项工作之间的时间),这个过程可能足以让您的网站保持正常运行。事实上,它可以作为解决方案 #3(使用外部服务以频繁的速度访问您的环境)
我有一个 ASP.NET 网站,我正在使用 Quartz 做一些后台工作。 Quartz 作业设置为每 5 分钟触发一次。
威尔石英:
- 运行在最后一个用户离开后持续在后台 网站?
- 在某个时间点停止,当新用户进入网站时继续?
如果答案是#2,有没有办法一直运行工作?
在某些时候,在一段时间不活动之后,您的 IIS 托管应用程序将落入 'sleep mode' 之王。从这一刻起,您的触发器将不再启动作业,直到您的应用被尝试访问它的用户重新激活。
您可以使用以下解决方案:
运行 您的工作在单独的 windows 服务中。需要一些重构工作,但显然是最安全的解决方案
Hangfire 是另一个 .Net 后台作业库。这是他们提供给用户的 link 解决此问题的 Making ASP.NET application always running。请注意,您需要完全控制托管环境才能实现此目的。
您可以将某些服务设置为 Pingdom 以防止您的站点陷入此 'sleep mode'。 但是,我不会推荐这个解决方案。
请注意,您的应用落入 'sleep mode' 之前所需的时间可能会因环境而异。如果在您的情况下它需要超过 5 分钟(您的每项工作之间的时间),这个过程可能足以让您的网站保持正常运行。事实上,它可以作为解决方案 #3(使用外部服务以频繁的速度访问您的环境)