public override async Task OnTimerCalledAsync(CancellationToken cancellationToken) { var lastUpdatedDate = await _updatingStateService.GetLastUpdatedDateAsync(); if (lastUpdatedDate.HasValue) { var changedShows = await _tvMazeProxy.GetShowsUpdatesAsync(lastUpdatedDate.Value); if (changedShows != null) { await _showWriteService.AddOrUpdateRangeAsync(changedShows); await _updatingStateService.SetLastUpdatedDateAsync(_timeProvider.Now); } } }
public override async Task OnTimerCalledAsync(CancellationToken cancellationToken) { var lastPage = await _processingStateService.GetLastProcessedPageAsync(); var needsToBeReprocessed = await _processingStateService.GetRequiredReProcessingPagesAsync(); int startPage = lastPage + 1 ?? 0; foreach (var currentPageInfo in GeneratePageInfoBy(startPage, needsToBeReprocessed)) { try { Logger.LogInformation($"Scraper page {0} processing is started"); var itemResult = await _tvMazeProxy.GetShowsInfoByPageAsync(currentPageInfo.Page); if (itemResult != null) { await _showWriteService.AddOrUpdateRangeAsync(itemResult); if (currentPageInfo.IsReprocessing) { await _processingStateService.TrySetSuccessfulPageReprocessedAsync(currentPageInfo.Page, Logger); } else { await _processingStateService.TrySetSuccessfulPageProcessedAsync(currentPageInfo.Page, Logger); } } else { await _updatingStateService.SetLastUpdatedDateAsync(_timeProvider.Now); Logger.LogInformation($"Scraper page {0} processing is finished. There was no page to process"); break; } Logger.LogInformation($"Scraper page {0} processing is finished"); } catch (Exception ex) { await _processingStateService.TrySetPageProcessingFailedAsync(currentPageInfo.Page, ex.GetBaseException().Message, Logger); Logger.LogCritical(ex, $"Full synchronize scraper host failed. Page number : {currentPageInfo.Page}"); } } }