optimize DistributedLocker

This commit is contained in:
nick.yi 2025-10-17 09:37:01 +08:00
parent 13d6f568fb
commit cd31fe376b
2 changed files with 7 additions and 3 deletions

View file

@ -32,7 +32,7 @@
<PackageVersion Include="Serilog.Sinks.File" Version="6.0.0" /> <PackageVersion Include="Serilog.Sinks.File" Version="6.0.0" />
<PackageVersion Include="Rougamo.Fody" Version="5.0.0" /> <PackageVersion Include="Rougamo.Fody" Version="5.0.0" />
<PackageVersion Include="Aspects.Cache" Version="2.0.4" /> <PackageVersion Include="Aspects.Cache" Version="2.0.4" />
<PackageVersion Include="DistributedLock.Redis" Version="1.0.3" /> <PackageVersion Include="DistributedLock.Redis" Version="1.1.0" />
<PackageVersion Include="EntityFrameworkCore.BootKit" Version="8.9.0" /> <PackageVersion Include="EntityFrameworkCore.BootKit" Version="8.9.0" />
<PackageVersion Include="Fluid.Core" Version="2.11.1" /> <PackageVersion Include="Fluid.Core" Version="2.11.1" />
<PackageVersion Include="Nanoid" Version="3.1.0" /> <PackageVersion Include="Nanoid" Version="3.1.0" />
@ -84,7 +84,7 @@
<PackageVersion Include="MySqlConnector" Version="2.4.0" /> <PackageVersion Include="MySqlConnector" Version="2.4.0" />
<PackageVersion Include="Npgsql" Version="8.0.7" /> <PackageVersion Include="Npgsql" Version="8.0.7" />
<PackageVersion Include="Tencent.QCloud.Cos.Sdk" Version="5.4.39" /> <PackageVersion Include="Tencent.QCloud.Cos.Sdk" Version="5.4.39" />
<PackageVersion Include="StackExchange.Redis" Version="2.7.27" /> <PackageVersion Include="StackExchange.Redis" Version="2.7.33" />
<PackageVersion Include="StrongGrid" Version="0.108.0" /> <PackageVersion Include="StrongGrid" Version="0.108.0" />
<PackageVersion Include="Twilio.AspNet.Common" Version="8.1.1" /> <PackageVersion Include="Twilio.AspNet.Common" Version="8.1.1" />
<PackageVersion Include="Twilio.AspNet.Core" Version="8.1.1" /> <PackageVersion Include="Twilio.AspNet.Core" Version="8.1.1" />

View file

@ -31,11 +31,15 @@ public class CrontabWatcher : BackgroundService
while (!stoppingToken.IsCancellationRequested) while (!stoppingToken.IsCancellationRequested)
{ {
await locker.LockAsync(DIST_KEY, async () => var isLocked = await locker.LockAsync(DIST_KEY, async () =>
{ {
await RunCronChecker(scope.ServiceProvider); await RunCronChecker(scope.ServiceProvider);
await Task.Delay(1000, stoppingToken); await Task.Delay(1000, stoppingToken);
}); });
if (isLocked == false)
{
await Task.Delay(1000, stoppingToken);
}
} }
_logger.LogWarning("Crontab Watcher background service is stopped."); _logger.LogWarning("Crontab Watcher background service is stopped.");