aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2015-12-28 12:28:06 -0500
committerLuke <luke.pulverenti@gmail.com>2015-12-28 12:28:06 -0500
commit3231c07ae1078d2dccd01278c86a64723005cff2 (patch)
treef9db3f233a0ef17fa9334efe3c8a601ed7f3fe18
parentc4c78f029f6cc54d62ddd27891732e0a834772ca (diff)
parent2743b79f0271f3f47feec480256dc015d59990bf (diff)
Merge pull request #1370 from MediaBrowser/master
throttle tmdb requests
-rw-r--r--MediaBrowser.Providers/Movies/MovieDbProvider.cs17
1 files changed, 15 insertions, 2 deletions
diff --git a/MediaBrowser.Providers/Movies/MovieDbProvider.cs b/MediaBrowser.Providers/Movies/MovieDbProvider.cs
index fe3e1f358..4aa24bf5d 100644
--- a/MediaBrowser.Providers/Movies/MovieDbProvider.cs
+++ b/MediaBrowser.Providers/Movies/MovieDbProvider.cs
@@ -366,14 +366,27 @@ namespace MediaBrowser.Providers.Movies
return mainResult;
}
+ private static long _lastRequestTicks;
+ private static int requestIntervalMs = 100;
+
/// <summary>
/// Gets the movie db response.
/// </summary>
- internal Task<Stream> GetMovieDbResponse(HttpRequestOptions options)
+ internal async Task<Stream> GetMovieDbResponse(HttpRequestOptions options)
{
+ var delayTicks = (requestIntervalMs * 10000) - (DateTime.UtcNow.Ticks - _lastRequestTicks);
+ var delayMs = Math.Min(delayTicks / 10000, requestIntervalMs);
+
+ if (delayMs > 0)
+ {
+ _logger.Debug("Throttling Tmdb by {0} ms", delayMs);
+ await Task.Delay(Convert.ToInt32(delayMs)).ConfigureAwait(false);
+ }
+
options.ResourcePool = MovieDbResourcePool;
+ _lastRequestTicks = DateTime.UtcNow.Ticks;
- return _httpClient.Get(options);
+ return await _httpClient.Get(options).ConfigureAwait(false);
}
public TheMovieDbOptions GetTheMovieDbOptions()