-
-
Notifications
You must be signed in to change notification settings - Fork 68
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Pool Manager: limit, pause and cancel requests #96
Conversation
Hey, this looks amazing, I will continue testing it out with the new 2.0.0 APIs, thank you for all the hard work you have put into this! |
You're welcome. Let me know if there is anything I need to change/can do. |
# Conflicts: # lib/extensions/multipart_request.dart # lib/extensions/request.dart # lib/extensions/streamed_request.dart # lib/http/intercepted_client.dart # lib/http/intercepted_http.dart # lib/http_interceptor.dart # pubspec.yaml # test/extensions/base_reponse_test.dart # test/extensions/base_request_test.dart # test/extensions/request_test.dart # test/extensions/response_test.dart # test/models/retry_policy_test.dart
I have updated this to work with the 2.0.0 beta. |
…ool-manager # Conflicts: # CHANGELOG.md # lib/extensions/request.dart # lib/http/intercepted_client.dart # pubspec.yaml # test/extensions/request_test.dart # test/models/retry_policy_test.dart
Any update on this @CodingAleCR ? Looking forward to use this on my app(almost ready to be released) app! Thanks for this awesome lib! |
# Conflicts: # lib/http/intercepted_client.dart # pubspec.yaml
Added the ability to cancel all requests that have not yet returned a response |
I really like this, but not entirely sure about the implementation. Lately, I've been thinking about adding a special |
1 similar comment
I really like this, but not entirely sure about the implementation. Lately, I've been thinking about adding a special |
That could be an option as well, yes 🤔 |
waiting a release!! |
🤷♂️ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've explored other options but none that I like as alternatives, this has the most potential and stability. Would you be willing to update the PR with the latest changes?
@@ -1,6 +1,7 @@ | |||
library http_interceptor; | |||
|
|||
export 'package:http/http.dart'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it's best if we expose http
package along with this package so we can avoid having to install manually http
when using http_interceptor
.
Is this feature still will be implemented or its abbandoned? |
I asked for a couple of updates. When done it should be good to go |
@vixez Have you quit this implementation or got any update on this? |
@shinayser I have rewritten major parts of our API code for the app, making this no longer needed. |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
This is a PR related to #92
The goal is to limit the amount of simultaneous requests, and pause requests when a token is being updated.
It is also possible to cancel active requests.
PoolManager
can handle both of these.I have added an explanation to
README.md
and updatedCHANGELOG.md
as well.Pool Manager
Using a
PoolManager
allows you to set the maximum amount of simultaneous requests, and pauserequests during token updates.
Create a
PoolManager
and assign it to anInterceptedClient
:In the above example only 8 requests can be active at once. By default this is 32.
Skip the pool
It is possible to skip a pool that is active, on hold, or blocked by a token update.
This can be useful to, for example, update a token in a
RetryPolicy
while the pool is on hold.If the
InterceptedClient.kSkipPoolHeader
header is found in the request the pool will be skipped, so the request is executed immediately.To your headers, add for example:
The value of the header does not matter and the
InterceptedClient.kSkipPoolHeader
is filtered out of the request before being sent to the server.Refreshing a token
If you use a
RetryPolicy
you can use thePoolManager
to put new requests on hold untilthe
RetryPolicy
has completed. UserequestUpdateToken
to let thePoolManager
know you want toupdate the token and put new requests on hold. Once you have updated the token,
use
releaseUpdateToken
to resume requests.Be sure to add logic (through an interceptor) to update queued requests with the new token you got
in the
RetryPolicy
.poolManager
in the example should be a reference to where you stored thePoolManager
youassigned to
InterceptedClient
.Cancel active requests
You can cancel all requests that have not yet returned a response. They will return with
RequestCancelledException
.This is done through the
PoolManager
withcancelRequests
(optionally releasing token updates with theforceReleaseUpdateToken
) parameter.