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:
@@ -583,6 +583,9 @@
|
|||||||
(<span title="{{Error}}"<b>Error</b></span>)
|
(<span title="{{Error}}"<b>Error</b></span>)
|
||||||
{{~else~}}
|
{{~else~}}
|
||||||
({{~Results~}})
|
({{~Results~}})
|
||||||
|
{{#if ElapsedTime}}
|
||||||
|
<span title="Elapsed time">[{{~ElapsedTime~}}ms]</span>
|
||||||
|
{{~/if~}}
|
||||||
{{~/if~}}
|
{{~/if~}}
|
||||||
{{~#if @last~}}
|
{{~#if @last~}}
|
||||||
.
|
.
|
||||||
@@ -782,6 +785,6 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script type="text/javascript" src="../libs/api.js?changed=2017083001"></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>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@@ -323,27 +324,34 @@ namespace Jackett.Common.Indexers
|
|||||||
var queryCopy = query.Clone();
|
var queryCopy = query.Clone();
|
||||||
|
|
||||||
if (!CanHandleQuery(queryCopy) || !CanHandleCategories(queryCopy, isMetaIndexer))
|
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)
|
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)
|
if (queryCopy.Cache)
|
||||||
{
|
{
|
||||||
var cachedReleases = cacheService.Search(this, queryCopy);
|
var cachedReleases = cacheService.Search(this, queryCopy);
|
||||||
if (cachedReleases != null)
|
if (cachedReleases != null)
|
||||||
return new IndexerResult(this, cachedReleases, true);
|
return new IndexerResult(this, cachedReleases, 0, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
var sw = new Stopwatch();
|
||||||
|
|
||||||
|
sw.Start();
|
||||||
|
|
||||||
var results = await PerformQuery(queryCopy);
|
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());
|
cacheService.CacheResults(this, queryCopy, results.ToList());
|
||||||
errorCount = 0;
|
errorCount = 0;
|
||||||
expireAt = DateTime.Now.Add(HealthyStatusValidity);
|
expireAt = DateTime.Now.Add(HealthyStatusValidity);
|
||||||
return new IndexerResult(this, results, false);
|
return new IndexerResult(this, results, sw.ElapsedMilliseconds, false);
|
||||||
}
|
}
|
||||||
catch (TooManyRequestsException ex)
|
catch (TooManyRequestsException ex)
|
||||||
{
|
{
|
||||||
|
@@ -13,12 +13,14 @@ namespace Jackett.Common.Indexers
|
|||||||
{
|
{
|
||||||
public IIndexer Indexer { get; set; }
|
public IIndexer Indexer { get; set; }
|
||||||
public IEnumerable<ReleaseInfo> Releases { get; set; }
|
public IEnumerable<ReleaseInfo> Releases { get; set; }
|
||||||
|
public long ElapsedTime { get; set; }
|
||||||
public bool IsFromCache;
|
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;
|
Indexer = indexer;
|
||||||
Releases = releases;
|
Releases = releases;
|
||||||
|
ElapsedTime = elapsedTime;
|
||||||
IsFromCache = isFromCache;
|
IsFromCache = isFromCache;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Jackett.Common.Models;
|
using Jackett.Common.Models;
|
||||||
@@ -48,14 +49,21 @@ namespace Jackett.Common.Indexers.Meta
|
|||||||
query = query.Clone();
|
query = query.Clone();
|
||||||
|
|
||||||
if (query.Offset > 0 || !CanHandleQuery(query) || !CanHandleCategories(query, true))
|
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
|
try
|
||||||
{
|
{
|
||||||
|
var sw = new Stopwatch();
|
||||||
|
|
||||||
|
sw.Start();
|
||||||
|
|
||||||
var results = await PerformQuery(query);
|
var results = await PerformQuery(query);
|
||||||
|
|
||||||
|
sw.Stop();
|
||||||
|
|
||||||
// the results are already filtered and fixed by each indexer
|
// 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
|
// 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)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
@@ -19,6 +19,8 @@ namespace Jackett.Common.Models.DTO
|
|||||||
public int Results { get; set; }
|
public int Results { get; set; }
|
||||||
[DataMember]
|
[DataMember]
|
||||||
public string Error { get; set; }
|
public string Error { get; set; }
|
||||||
|
[DataMember]
|
||||||
|
public long ElapsedTime { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
[DataContract]
|
[DataContract]
|
||||||
|
@@ -272,6 +272,7 @@ namespace Jackett.Server.Controllers
|
|||||||
{
|
{
|
||||||
resultIndexer.Status = ManualSearchResultIndexerStatus.OK;
|
resultIndexer.Status = ManualSearchResultIndexerStatus.OK;
|
||||||
resultIndexer.Results = t.Result.Releases.Count();
|
resultIndexer.Results = t.Result.Releases.Count();
|
||||||
|
resultIndexer.ElapsedTime = t.Result.ElapsedTime;
|
||||||
resultIndexer.Error = null;
|
resultIndexer.Error = null;
|
||||||
indexer = t.Result.Indexer;
|
indexer = t.Result.Indexer;
|
||||||
}
|
}
|
||||||
@@ -279,6 +280,7 @@ namespace Jackett.Server.Controllers
|
|||||||
{
|
{
|
||||||
resultIndexer.Status = ManualSearchResultIndexerStatus.Error;
|
resultIndexer.Status = ManualSearchResultIndexerStatus.Error;
|
||||||
resultIndexer.Results = 0;
|
resultIndexer.Results = 0;
|
||||||
|
resultIndexer.ElapsedTime = 0;
|
||||||
resultIndexer.Error = ((IndexerException)t.Exception.InnerException).ToString();
|
resultIndexer.Error = ((IndexerException)t.Exception.InnerException).ToString();
|
||||||
indexer = ((IndexerException)t.Exception.InnerException).Indexer;
|
indexer = ((IndexerException)t.Exception.InnerException).Indexer;
|
||||||
}
|
}
|
||||||
@@ -286,6 +288,7 @@ namespace Jackett.Server.Controllers
|
|||||||
{
|
{
|
||||||
resultIndexer.Status = ManualSearchResultIndexerStatus.Unknown;
|
resultIndexer.Status = ManualSearchResultIndexerStatus.Unknown;
|
||||||
resultIndexer.Results = 0;
|
resultIndexer.Results = 0;
|
||||||
|
resultIndexer.ElapsedTime = 0;
|
||||||
resultIndexer.Error = null;
|
resultIndexer.Error = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user