public async Task <object> Analyze([FromRoute] string siteId) { var sites = await sitesApi.GetList(); var ss = sites.Single(s => s.Id == siteId); await queueApi.Add(new QueueJobBuilder().OfAnalyze(siteId, ss.Url).ForceAnalyze().Build()); return(true); }
protected override async Task ExecuteIteration(QueueItem task, CancellationToken token) { try { var url = task.Arguments["url"]; if (!DaemonUtils.IsUrl(url)) { return; } var depthStr = task.Arguments.GetValueOrDefault("parseDepth", "5"); if (!uint.TryParse(depthStr, out var depth)) { depth = 5; } var uri = new Uri(url); var siteId = await sitesApi.NewSite(uri.Host); status = $"Скачивание {uri.Host}"; try { await Parse(siteId, uri, 0, depth, new ConcurrentDictionary <int, bool>(), token); } catch (OperationCanceledException) { await queueApi.Add(new QueueJobBuilder().OfParsing(url).ParsingDepth(depth).Build()); throw; } if (token.IsCancellationRequested) { await queueApi.Add(new QueueJobBuilder().OfParsing(url).ParsingDepth(depth).Build()); token.ThrowIfCancellationRequested(); } await queueApi.Add(new QueueJobBuilder().OfAnalyze(siteId, uri.Host).Build()); status = DaemonConstants.IdleStatus; } catch (Exception e) when(!(e is OperationCanceledException)) { Console.Error.WriteLine(e.Message); Console.Error.WriteLine(e.StackTrace); } }
protected override async Task ExecuteIteration(QueueItem task, CancellationToken token) { try { var siteId = task.Arguments["site"]; if (await sitesApi.CheckAnalyzed(siteId) && !task.Arguments.ContainsKey("forceAnalyze")) { return; } var url = task.Arguments["url"]; status = $"Анализ {url}"; var files = await sitesApi.GetSiteFiles(siteId); try { var analyzerChain = CreateAnalyzerChain(); foreach (var file in files) { status = $"Анализ {url}/{file.Filename.TrimStart('/')}"; analyzerChain.ProcessFile(file, token); } analyzerChain.SaveWebometricsValue( async(type, val, weight) => await sitesApi.SetSiteParam(siteId, type, val, weight)); await sitesApi.UpdateResultWebmetrick(siteId, analyzerChain.ChainWeight); } catch (OperationCanceledException) { await queueApi.Add(new QueueJobBuilder().OfAnalyze(siteId, url).ForceAnalyze().Build()); throw; } await sitesApi.MarkAnalyzed(siteId); status = DaemonConstants.IdleStatus; } catch (Exception e) when(!(e is OperationCanceledException)) { Console.Error.WriteLine(e.Message); Console.Error.WriteLine(e.StackTrace); } }