feat(nextRunWorker): реализация пересчета просроченных nextRun для работ с автораспределением

This commit is contained in:
Mikhail Trubnikov
2026-01-23 09:28:14 +10:00
parent 9e84ef8029
commit 9964e3388d
4 changed files with 80 additions and 59 deletions

View File

@@ -20,20 +20,20 @@ namespace PARR.BLL.Services.Implementations
{
nextStart = DateTimeOffset.UtcNow;
logger.LogInformation($"Запуск по расписанию. Интервал: {interval}, дата: {nextStart}");
logger.LogInformation("Запуск по расписанию. Интервал: {interval}, дата: {nextStart}", interval, nextStart);
await intervalHandler.Invoke();
nextStart = nextStart.Add(interval);
logger.LogInformation($"Следующая дата запуска: {nextStart}. Интервал: {interval}.");
logger.LogInformation("Следующая дата запуска: {nextStart}. Интервал: {interval}.", nextStart, interval);
var intervalOffset = nextStart - DateTimeOffset.UtcNow;
if (intervalOffset < TimeSpan.Zero)
{
intervalOffset = TimeSpan.Zero;
logger.LogWarning($"Время следующего запуска изменено на сейчас. Так как рассчитанное время запуска меньше чем сейчас, {nextStart}<{DateTimeOffset.UtcNow}. " +
$"Это произошло потому что время выполнения основного метода больше чем заданный интервал повторений.");
logger.LogWarning("Время следующего запуска изменено на сейчас. Так как рассчитанное время запуска меньше чем сейчас, {nextStart}<{now}. " +
$"Это произошло потому что время выполнения основного метода больше чем заданный интервал повторений.", nextStart, DateTimeOffset.UtcNow);
}
await Task.Delay(intervalOffset);