Add performance for price reminder

This commit is contained in:
2025-09-14 21:09:34 +07:00
parent c205abc54a
commit daeb26375b
5 changed files with 160 additions and 28 deletions

View File

@@ -56,7 +56,7 @@ public class PriceFetcher15MinGrain : Grain, IPriceFetcher15MinGrain, IRemindabl
await this.RegisterOrUpdateReminder(
FetchPricesReminderName,
TimeSpan.FromSeconds(5),
TimeSpan.FromMinutes(5));
TimeSpan.FromMinutes(7.5));
await base.OnActivateAsync(cancellationToken);
}
@@ -184,12 +184,19 @@ public class PriceFetcher15MinGrain : Grain, IPriceFetcher15MinGrain, IRemindabl
{
if (_timer != null) return;
// Calculate the next execution time aligned to X-minute boundaries
var now = DateTime.UtcNow;
var dueTime = CandleHelpers.GetDueTimeForTimeframe(TargetTimeframe, now);
var period = TimeSpan.FromSeconds(CandleHelpers.GetBaseIntervalInSeconds(TargetTimeframe));
_logger.LogInformation("{0} next execution scheduled in {1} seconds and at {2:} UTC every {3} seconds",
nameof(PriceFetcher15MinGrain), dueTime, now.Add(dueTime), period);
_timer = this.RegisterGrainTimer(
async _ => await FetchAndPublishPricesAsync(),
new GrainTimerCreationOptions
{
Period = TimeSpan.FromMinutes(15),
DueTime = TimeSpan.FromSeconds(1),
Period = period,
DueTime = dueTime,
KeepAlive = true
});
@@ -216,7 +223,7 @@ public class PriceFetcher15MinGrain : Grain, IPriceFetcher15MinGrain, IRemindabl
RegisterAndStartTimer();
}
}
return Task.CompletedTask;
}
}