HangFire 重复任务数据
HangFire recurring task data
我正在编写一个 MVC 5 互联网应用程序,并且正在使用 HangFire
执行重复性任务。
如果我有一个每月重复的任务,如何获取下一次执行时间的值?
这是我的重复任务代码:
RecurringJob.AddOrUpdate("AccountMonthlyActionExtendPaymentSubscription", () => accountService.AccountMonthlyActionExtendPaymentSubscription(), Cron.Monthly);
我可以按如下方式检索作业数据:
using (var connection = JobStorage.Current.GetConnection())
{
var recurringJob = connection.GetJobData("AccountMonthlyActionExtendPaymentSubscription");
}
但是,我不确定下一步该做什么。
是否可以获取循环任务的下一次执行时间?
提前致谢。
你很接近。我不确定是否有更好或更直接的方式来获取这些详细信息,但 Hangfire 仪表板的方式是使用名为 [=12= 的扩展方法(将 using Hangfire.Storage;
添加到您的导入中) ]:
using (var connection = JobStorage.Current.GetConnection())
{
var recurring = connection.GetRecurringJobs().FirstOrDefault(p => p.Id == "AccountMonthlyActionExtendPaymentSubscription");
if (recurring == null)
{
// recurring job not found
Console.WriteLine("Job has not been created yet.");
}
else if (!recurring.NextExecution.HasValue)
{
// server has not had a chance yet to schedule the job's next execution time, I think.
Console.WriteLine("Job has not been scheduled yet. Check again later.");
}
else
{
Console.WriteLine("Job is scheduled to execute at {0}.", recurring.NextExecution);
}
}
有两个问题:
- 它 returns 所有重复作业,您需要 select 结果中的适当记录
- 当您第一次创建作业时,
NextExecution
时间尚不可用(它将为空)。我相信服务器一旦连接,就会定期检查需要安排的重复任务并这样做;它们似乎不会在使用 RecurringJob.AddOrUpdate(...)
或其他类似方法创建时立即安排。如果您需要在创建后立即获得 NextExecution
值,我不确定您可以做什么。不过,它最终会被填充。
我正在编写一个 MVC 5 互联网应用程序,并且正在使用 HangFire
执行重复性任务。
如果我有一个每月重复的任务,如何获取下一次执行时间的值?
这是我的重复任务代码:
RecurringJob.AddOrUpdate("AccountMonthlyActionExtendPaymentSubscription", () => accountService.AccountMonthlyActionExtendPaymentSubscription(), Cron.Monthly);
我可以按如下方式检索作业数据:
using (var connection = JobStorage.Current.GetConnection())
{
var recurringJob = connection.GetJobData("AccountMonthlyActionExtendPaymentSubscription");
}
但是,我不确定下一步该做什么。
是否可以获取循环任务的下一次执行时间?
提前致谢。
你很接近。我不确定是否有更好或更直接的方式来获取这些详细信息,但 Hangfire 仪表板的方式是使用名为 [=12= 的扩展方法(将 using Hangfire.Storage;
添加到您的导入中) ]:
using (var connection = JobStorage.Current.GetConnection())
{
var recurring = connection.GetRecurringJobs().FirstOrDefault(p => p.Id == "AccountMonthlyActionExtendPaymentSubscription");
if (recurring == null)
{
// recurring job not found
Console.WriteLine("Job has not been created yet.");
}
else if (!recurring.NextExecution.HasValue)
{
// server has not had a chance yet to schedule the job's next execution time, I think.
Console.WriteLine("Job has not been scheduled yet. Check again later.");
}
else
{
Console.WriteLine("Job is scheduled to execute at {0}.", recurring.NextExecution);
}
}
有两个问题:
- 它 returns 所有重复作业,您需要 select 结果中的适当记录
- 当您第一次创建作业时,
NextExecution
时间尚不可用(它将为空)。我相信服务器一旦连接,就会定期检查需要安排的重复任务并这样做;它们似乎不会在使用RecurringJob.AddOrUpdate(...)
或其他类似方法创建时立即安排。如果您需要在创建后立即获得NextExecution
值,我不确定您可以做什么。不过,它最终会被填充。