gpt4 book ai didi

iis - 作业停止运行?

转载 作者:行者123 更新时间:2023-12-04 00:43:06 25 4
gpt4 key购买 nike

我有一个作业,我想每十分钟运行一次。为了安排它,我使用:

public static IScheduler _scheduler { get; private set; }

...

ISchedulerFactory schedFact = new StdSchedulerFactory();
_scheduler = schedFact.GetScheduler();
_scheduler.Start();

string cron = "0 0/10 * 1/1 * ? *";

JobKey jobkey = new JobKey("Radar", "F");
IJobDetail job = JobBuilder.Create<RadarJob>()
.WithIdentity(jobkey)
.Build();

CronScheduleBuilder csb = CronScheduleBuilder.CronSchedule(new CronExpression(cron)).InTimeZone(TimeZoneInfo.Local);
ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create()
.WithIdentity("Radar-Trigger", "G")
.WithSchedule(csb)
.Build();
try
{
DateTimeOffset ft = _scheduler.ScheduleJob(job, trigger);
Response.Write("Job Scheduled");
}
catch (ObjectAlreadyExistsException)
{
Response.Write("Job Already Exists!");
}

一开始似乎工作正常,每十分钟运行一次。但是,大约一个小时后,它停止运行。我记录成功和错误,我没有错误。是什么导致我的工作自行停止?

我正在运行 IIS 7、.NET Framework 4.0,使用 GoDaddy 的共享主机计划。

最佳答案

您的作业在 IIS AppPool 中运行。池可能正在回收,这将终止 quartz 任务,并且 IIS 不会自动重新启动它(因为它确实会在池回收时重新启动正在处理的 Web 请求)。

(我假设您正在 Global.asax 文件内的 Application_Start() 中运行上述代码。)

我们遇到了这种情况并决定使用 quartz 作为独立服务,它不会受到池回收的影响,但我不确定在共享托管计划下这对您来说是否是一个可行的选择。

您指出您正在 IIS 7 上运行。如果实际上这是 IIS 7.5,可能有更好的解决方案,请参阅 Auto-Start application / global.asax / wcf service when IIS7 starts automatically ,这将是将应用程序池配置为自动重启。

关于iis - 作业停止运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16755373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com