StrictRateLimitedDispatcher
public final class StrictRateLimitedDispatcher : RateLimitedDispatcherBase
A PromiseKit Dispatcher that dispatches no more than X closures every Y
seconds. This is a sliding window, so executions occur as rapidly as
possible without exceeding X in any Y-second period.
This version implements perfectly accurate timing, so it must (temporarily) track up to X previous execution times and is thus O(X) in space.
For a “pretty good” approach to rate limiting that does not consume
additional storage, see RateLimitedDispatcher.
Executions are paced by start time, not by completion, so it’s possible to end up with more than X closures running concurrently in some circumstances.
There is no guarantee that you will reach a given dispatch rate. There are not an infinite number of threads available, and GCD scheduling has limited accuracy. The only guarantee is that dispatching will never exceed the requested rate.
100% thread safe.
-
A
PromiseKitDispatcherthat dispatches no more than X executions every Y seconds. This is a sliding window, so executions occur as rapidly as possible without exceeding X in any Y-second period. O(X) in space.For a “pretty good” approach to rate limiting that does not consume additional storage, see
RateLimitedDispatcher.Declaration
Swift
override public init(maxDispatches: Int, perInterval interval: TimeInterval, queue: Dispatcher = DispatchQueue.global())Parameters
maxDispatchesThe number of executions that may be dispatched within a given interval.
perIntervalThe length of the reference interval, in seconds.
queueThe DispatchQueue or Dispatcher on which to perform executions. May be serial or concurrent.
-
Undocumented
Declaration
Swift
public convenience init(maxDispatches: Int, perInterval interval: TimeInterval, queue: DispatchQueue)
View on GitHub
StrictRateLimitedDispatcher Class Reference