我正在使用cron表达式创建重复作业。我正在创建一个表达式,每周3天每半小时执行一次。 执行正确,但启动时间不正确。 假设作业的创建发生在下午2:16,该作业在下午2:30开始执行。 如果我配置为执行2:20,则作业也从下午2:30开始,理想情况下,我想从2:20开始,每半小时重复一次。 目前,我找不到从2:25开始并每半小时重现一次的方法。
有人可以让我知道为什么使用cron表达式时会发生这种情况吗?有没有一种方法可以识别这种模式,以便我可以调整执行时间。 cron表达式为“ * / 30 * * 1,2 1,2,3”
@cocowalla:我正在使用sql server作为后端。我完全按照hangfire文档中给出的方式复制了连接字符串,但并未考虑轮询。除此之外,还有其他原因吗?
答案 0 :(得分:1)
从docs开始,对SQL后端进行轮询,因此开始时间的准确性可能受到限制:
原始SQL Server作业存储实现的主要缺点之一–它使用轮询技术来获取新作业。从Hangfire 1.7.0开始,在设置了SlidingInvisibilityTimeout选项后,可以将TimeSpan.Zero用作轮询间隔。
{
SlidingInvisibilityTimeout = TimeSpan.FromMinutes(5),
QueuePollInterval = TimeSpan.Zero
};
GlobalConfiguration.Configuration.UseSqlServerStorage("<name or connection string>", options);```