mirror of
https://github.com/Radarr/Radarr
synced 2025-02-27 16:42:46 +00:00
New: Limit grabs to 1 per second to reduce rapid API calls
This commit is contained in:
parent
0c6ca6971d
commit
1275d8098d
1 changed files with 45 additions and 38 deletions
|
@ -2,8 +2,10 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using NLog;
|
using NLog;
|
||||||
|
using NzbDrone.Common;
|
||||||
using NzbDrone.Core.DecisionEngine;
|
using NzbDrone.Core.DecisionEngine;
|
||||||
using NzbDrone.Core.Download.Pending;
|
using NzbDrone.Core.Download.Pending;
|
||||||
|
using NzbDrone.Core.Parser.Model;
|
||||||
|
|
||||||
namespace NzbDrone.Core.Download
|
namespace NzbDrone.Core.Download
|
||||||
{
|
{
|
||||||
|
@ -37,6 +39,9 @@ public ProcessedDecisions ProcessDecisions(List<DownloadDecision> decisions)
|
||||||
var grabbed = new List<DownloadDecision>();
|
var grabbed = new List<DownloadDecision>();
|
||||||
var pending = new List<DownloadDecision>();
|
var pending = new List<DownloadDecision>();
|
||||||
|
|
||||||
|
//Limits to 1 grab every 1 second to reduce rapid API hits
|
||||||
|
using (var rateGate = new RateGate(1, TimeSpan.FromSeconds(1)))
|
||||||
|
{
|
||||||
foreach (var report in prioritizedDecisions)
|
foreach (var report in prioritizedDecisions)
|
||||||
{
|
{
|
||||||
var remoteEpisode = report.RemoteEpisode;
|
var remoteEpisode = report.RemoteEpisode;
|
||||||
|
@ -71,6 +76,7 @@ public ProcessedDecisions ProcessDecisions(List<DownloadDecision> decisions)
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
rateGate.WaitToProceed();
|
||||||
_downloadService.DownloadReport(remoteEpisode);
|
_downloadService.DownloadReport(remoteEpisode);
|
||||||
grabbed.Add(report);
|
grabbed.Add(report);
|
||||||
}
|
}
|
||||||
|
@ -81,6 +87,7 @@ public ProcessedDecisions ProcessDecisions(List<DownloadDecision> decisions)
|
||||||
_logger.WarnException("Couldn't add report to download queue. " + remoteEpisode, e);
|
_logger.WarnException("Couldn't add report to download queue. " + remoteEpisode, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return new ProcessedDecisions(grabbed, pending, decisions.Where(d => d.Rejected).ToList());
|
return new ProcessedDecisions(grabbed, pending, decisions.Where(d => d.Rejected).ToList());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue