私はHTTPクライアントでレート制限を実装するスマートな方法を探しています。 APIのレート制限がいずれかのリソースで1秒あたり5リクエストであるとします。今実装は次のようになります。Rate Limit with RxSwift
final class HTTPClient: HTTPClientProtocol {
func getUser() -> Observable<User> {
return Observable<User>.create { (observer) -> Disposable in
...
}
}
func getProfile() -> Observable<Profile> {
return Observable<Profile>.create { (observer) -> Disposable in
...
}
}
func getMessages() -> Observable<Messages> {
return Observable<Messages>.create { (observer) -> Disposable in
...
}
}
func getFriends() -> Observable<Friends> {
return Observable<Friends>.create { (observer) -> Disposable in
...
}
}
}
今、理想的に私は、必要に応じて、すべてのレート制限を気にすることなく、アプリケーション全体でこれらのメソッドを使用したいと思います。
1秒あたり5リクエストの例に戻る:最初の5つのリクエストはすぐに実行できます。しかしその後のすべてのリクエストは待たなければなりません。したがって、1秒のウィンドウ内では、最大で5回のリクエストを実行できます。他のすべてのリクエストは待機する必要があります。
これをRxSwiftで実行するスマートな方法はありますか?
が重複する可能性を/ questions/43794392/rxswiftとの制限付き同時アクセスサービスクラス) –
リンクされた質問には、「2要求/秒」の処理方法は示されていません。 – plu
ああ...リンクされた答えは部分的に正しいです。サービスの専用スケジューラが必要ですが、カスタムスケジューラにする必要があります...カスタムスケジューラをまだ実行していないので、これについて考える必要があります。 –