diff options
| author | Luke <luke.pulverenti@gmail.com> | 2015-12-28 12:28:06 -0500 |
|---|---|---|
| committer | Luke <luke.pulverenti@gmail.com> | 2015-12-28 12:28:06 -0500 |
| commit | 3231c07ae1078d2dccd01278c86a64723005cff2 (patch) | |
| tree | f9db3f233a0ef17fa9334efe3c8a601ed7f3fe18 | |
| parent | c4c78f029f6cc54d62ddd27891732e0a834772ca (diff) | |
| parent | 2743b79f0271f3f47feec480256dc015d59990bf (diff) | |
Merge pull request #1370 from MediaBrowser/master
throttle tmdb requests
| -rw-r--r-- | MediaBrowser.Providers/Movies/MovieDbProvider.cs | 17 |
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() |
