【发布时间】:2020-06-24 08:38:59
【问题描述】:
我有 .NET Core 3+ 工作服务,每 10 秒检查一次“一些东西”。在某一时刻,它“随机”停止了这样做,我不知道为什么。到目前为止它发生了两次并且没有异常日志或类似的东西,所以我只能假设我应该在 ExecuteAsync 中添加一个try-catch,但我的问题是:是否有任何已知问题可能导致类似的行为,其中worker 只是停止执行?
是的,没有请求取消(否则,我想它会记录消息“发件人正在停止”)。
public class Worker : BackgroundService
{
private readonly ILogger<Worker> _logger;
public Worker(ILogger<Worker> logger)
{
_logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
_logger.LogInformation("Sender is starting");
stoppingToken.Register(() => _logger.LogInformation("Sender is stopping"));
while (!stoppingToken.IsCancellationRequested)
{
await Task.Delay(10000, stoppingToken);
_logger.LogDebug("Worker running at: {time}", DateTimeOffset.Now);
if (!stoppingToken.IsCancellationRequested)
await SendPendingMessages();
}
}
private async Task SendPendingMessages()
{
var list = ...
foreach (var item in list)
{
try
{
// Do stuff as expected
}
catch (Exception ex)
{
_logger.LogError(ex, ex.Message);
}
}
}
}
【问题讨论】:
标签: c# .net-core service-worker worker