aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2015-12-28 12:27:37 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2015-12-28 12:27:37 -0500
commit2743b79f0271f3f47feec480256dc015d59990bf (patch)
tree72ebd489b600739f236cbc722132a4b5d010fe74
parent8eddcc2346dfbbaa9f61e8493b347a7db040ee33 (diff)
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()