mirror of
https://github.com/Jackett/Jackett.git
synced 2025-09-17 17:34:09 +02:00
ui: add elapsed time per indexer (#15100)
This commit is contained in:
@@ -580,9 +580,12 @@
|
||||
>
|
||||
{{Name}}
|
||||
{{#if Error}}
|
||||
(<span title="{{Error}}"<b>Error</b></span>)
|
||||
{{~else~}}
|
||||
({{~Results~}})
|
||||
(<span title="{{Error}}"<b>Error</b></span>)
|
||||
{{~else~}}
|
||||
({{~Results~}})
|
||||
{{#if ElapsedTime}}
|
||||
<span title="Elapsed time">[{{~ElapsedTime~}}ms]</span>
|
||||
{{~/if~}}
|
||||
{{~/if~}}
|
||||
{{~#if @last~}}
|
||||
.
|
||||
@@ -782,6 +785,6 @@
|
||||
</script>
|
||||
|
||||
<script type="text/javascript" src="../libs/api.js?changed=2017083001"></script>
|
||||
<script type="text/javascript" src="../custom.js?changed=20240224v1"></script>
|
||||
<script type="text/javascript" src="../custom.js?changed=20240229v1"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
@@ -323,27 +324,34 @@ namespace Jackett.Common.Indexers
|
||||
var queryCopy = query.Clone();
|
||||
|
||||
if (!CanHandleQuery(queryCopy) || !CanHandleCategories(queryCopy, isMetaIndexer))
|
||||
return new IndexerResult(this, Array.Empty<ReleaseInfo>(), false);
|
||||
return new IndexerResult(this, Array.Empty<ReleaseInfo>(), 0, false);
|
||||
|
||||
if (!SupportsPagination && queryCopy.Offset > 0)
|
||||
return new IndexerResult(this, Array.Empty<ReleaseInfo>(), false);
|
||||
return new IndexerResult(this, Array.Empty<ReleaseInfo>(), 0, false);
|
||||
|
||||
if (queryCopy.Cache)
|
||||
{
|
||||
var cachedReleases = cacheService.Search(this, queryCopy);
|
||||
if (cachedReleases != null)
|
||||
return new IndexerResult(this, cachedReleases, true);
|
||||
return new IndexerResult(this, cachedReleases, 0, true);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var sw = new Stopwatch();
|
||||
|
||||
sw.Start();
|
||||
|
||||
var results = await PerformQuery(queryCopy);
|
||||
results = FilterResults(queryCopy, results);
|
||||
results = FixResults(queryCopy, results);
|
||||
|
||||
sw.Stop();
|
||||
|
||||
results = FilterResults(queryCopy, results).ToList();
|
||||
results = FixResults(queryCopy, results).ToList();
|
||||
cacheService.CacheResults(this, queryCopy, results.ToList());
|
||||
errorCount = 0;
|
||||
expireAt = DateTime.Now.Add(HealthyStatusValidity);
|
||||
return new IndexerResult(this, results, false);
|
||||
return new IndexerResult(this, results, sw.ElapsedMilliseconds, false);
|
||||
}
|
||||
catch (TooManyRequestsException ex)
|
||||
{
|
||||
|
@@ -13,12 +13,14 @@ namespace Jackett.Common.Indexers
|
||||
{
|
||||
public IIndexer Indexer { get; set; }
|
||||
public IEnumerable<ReleaseInfo> Releases { get; set; }
|
||||
public long ElapsedTime { get; set; }
|
||||
public bool IsFromCache;
|
||||
|
||||
public IndexerResult(IIndexer indexer, IEnumerable<ReleaseInfo> releases, bool isFromCache)
|
||||
public IndexerResult(IIndexer indexer, IEnumerable<ReleaseInfo> releases, long elapsedTime, bool isFromCache)
|
||||
{
|
||||
Indexer = indexer;
|
||||
Releases = releases;
|
||||
ElapsedTime = elapsedTime;
|
||||
IsFromCache = isFromCache;
|
||||
}
|
||||
}
|
||||
|
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Jackett.Common.Models;
|
||||
@@ -48,14 +49,21 @@ namespace Jackett.Common.Indexers.Meta
|
||||
query = query.Clone();
|
||||
|
||||
if (query.Offset > 0 || !CanHandleQuery(query) || !CanHandleCategories(query, true))
|
||||
return new IndexerResult(this, Array.Empty<ReleaseInfo>(), false);
|
||||
return new IndexerResult(this, Array.Empty<ReleaseInfo>(), 0, false);
|
||||
|
||||
try
|
||||
{
|
||||
var sw = new Stopwatch();
|
||||
|
||||
sw.Start();
|
||||
|
||||
var results = await PerformQuery(query);
|
||||
|
||||
sw.Stop();
|
||||
|
||||
// the results are already filtered and fixed by each indexer
|
||||
// some results may come from cache, but we can't inform without refactor the code
|
||||
return new IndexerResult(this, results, false);
|
||||
return new IndexerResult(this, results, sw.ElapsedMilliseconds, false);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
@@ -19,6 +19,8 @@ namespace Jackett.Common.Models.DTO
|
||||
public int Results { get; set; }
|
||||
[DataMember]
|
||||
public string Error { get; set; }
|
||||
[DataMember]
|
||||
public long ElapsedTime { get; set; }
|
||||
}
|
||||
|
||||
[DataContract]
|
||||
|
@@ -272,6 +272,7 @@ namespace Jackett.Server.Controllers
|
||||
{
|
||||
resultIndexer.Status = ManualSearchResultIndexerStatus.OK;
|
||||
resultIndexer.Results = t.Result.Releases.Count();
|
||||
resultIndexer.ElapsedTime = t.Result.ElapsedTime;
|
||||
resultIndexer.Error = null;
|
||||
indexer = t.Result.Indexer;
|
||||
}
|
||||
@@ -279,6 +280,7 @@ namespace Jackett.Server.Controllers
|
||||
{
|
||||
resultIndexer.Status = ManualSearchResultIndexerStatus.Error;
|
||||
resultIndexer.Results = 0;
|
||||
resultIndexer.ElapsedTime = 0;
|
||||
resultIndexer.Error = ((IndexerException)t.Exception.InnerException).ToString();
|
||||
indexer = ((IndexerException)t.Exception.InnerException).Indexer;
|
||||
}
|
||||
@@ -286,6 +288,7 @@ namespace Jackett.Server.Controllers
|
||||
{
|
||||
resultIndexer.Status = ManualSearchResultIndexerStatus.Unknown;
|
||||
resultIndexer.Results = 0;
|
||||
resultIndexer.ElapsedTime = 0;
|
||||
resultIndexer.Error = null;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user