4

我正在使用 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文档中给出的方式复制连接字符串,但没有查看轮询。除了这个还有其他原因吗?

4

1 回答 1

2

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);```

于 2019-06-15T08:51:31.183 回答