diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-12-28 12:27:37 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-12-28 12:27:37 -0500 |
| commit | 2743b79f0271f3f47feec480256dc015d59990bf (patch) | |
| tree | 72ebd489b600739f236cbc722132a4b5d010fe74 | |
| parent | 8eddcc2346dfbbaa9f61e8493b347a7db040ee33 (diff) | |
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() |
