-
Notifications
You must be signed in to change notification settings - Fork 3
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
Replacing uses of single-request {httr} functions with RETRY() #1
Comments
Thanks for posting, @jameslamb ! I love this idea of taking the time to shore up bits and pieces of many different packages and spreading best practices. Another good outcome might be seeing if RStudio would take a PR to |
My workflowr package is one of those reverse dependencies, and I super welcome a PR to make the GitHub API calls more robust. The function |
I wrote up a 101-level "wtf is HTTP" last night: https://github.com/jameslamb/talks/tree/master/chi-r-collab-httr. Decided to put it in that repo because I might turn it into a lightning talk in the future. For those who want to do the "go make PRs to existing packages" part of this project, here are some examples:
The basic process is:
|
Some resources shared during our first chat:
|
to make all API accessing fns more resilient against brief network outages etc. cf. chircollab/chircollab20#1
makes the fn more resilient against brief network outages etc. cf. chircollab/chircollab20#1
Cleaning up my "created by me" issue list today, I think this served it's purpose and can be closed. Thanks for all your help everyone, this was fun!!! |
TL;DR
There are a ton HTTP clients on CRAN, and many of them make single pass-or-fail HTTP requests. If they added some retry logic (with
httr::RETRY()
), they would be more resilient to transient issues like brief network disruptions or service downtime.Details
{httr}
is a super-popular package for making HTTP requests in R and handling their response. It has a LOT of direct reverse imports, and impacts a lot of other projects indirectly.I have seen many examples of packages where people use functions like
httr::GET()
,httr::POST()
,httr::VERB()
, etc. to make HTTP requests. These functions attempt to make a single request and raise an error if anything goes wrong.I believe (though I don't know for sure) that this all-or-nothing approach is not something package authors have carefully and intentionally chosen, and changing those calls to
httr::RETRY()
would make those packages more resilient to transient problems like brief network outages or periods where the service(s) it hits are overwhelmed. In my experience, using retry logic can improve the user experience with HTTP clients.I propose a group spend some time improving the ecosystem of HTTP clients in R by repeating these steps:
{httr}
reverse importshttr::GET()
,httr::POST()
,httr::PUT()
,httr::VERB()
,httr::DELETE()
,httr::HEAD()
, andhttr::PATCH()
and replace them with the appropriatehttr::RETRY()
I'd be happy to start out with a short introduction to HTTP and what
httr::RETRY()
actually does.The text was updated successfully, but these errors were encountered: