Easily turn an async function returning a Promise with retry logic.
Request Retry wrapper
Lightweight retry wrapper for fetch with exponential backoff, timeout support, and hooks
Universal pagination + rate-limit + retry wrapper for third-party APIs
A retry wrapper above request-promise
Auto-retry wrapper for fetch with exponential backoff and custom retry conditions. < 1 KB, zero deps.
A retry wrapper over reacts lazy implemetation to refetch chunks before failing
A utility to retry failed async methods.
Retries a function that returns a promise, leveraging the power of the retry module.
Abstraction for exponential and custom retry strategies for failed operations.
TypeScript definitions for retry
Retries a function that returns a promise, leveraging the power of the retry module.
Retrying made simple, easy and async
Retry a promise-returning or async function
Flexible and configurable retry wrapper for all promise/async functions
TypeScript definitions for promise-retry
Check whether a request can be retried based on the `error.code`
Extend any fetch library with retry functionality
An exchange for operation retry support in urql
AI-specific retry wrapper with circuit breaker for tool calls
Retry a failed promise
Safe, configurable retry wrapper for LLM API calls.
Axios plugin that intercepts failed requests and retries them whenever posible.
Retry HTTP requests with Axios.
A zero-dependency HTTP client built on Ruby's net/http with automatic retries, request/response interceptors, and a clean API for JSON services.
The attempt library provides a thin wrapper for the typical begin/rescue/sleep/retry dance. Use this in order to robustly handle blocks of code that could briefly flake out, such as an http or database connection, where it's often better to try again after a brief period rather than fail immediately.
A retry-method for Eventmachine and a convenience wrapper.
Provides various more convenient wrappers around Net::HTTP methods
A simple exponential backoff retry wrapper.
Tenax wraps unreliable operations (HTTP calls, database queries, queue publishes) in a configurable resilience layer: retries with pluggable backoff strategies, error classification, optional circuit breaking, and built-in instrumentation. Designed for Ruby services that need to survive transient failures without bespoke retry logic in every call site.
Back in 2015 I was a guy automating things at my job and two scripts had a common need -- they both had to pass the same credentials to Jenkins (via query params, I guess). That common tool with a single method was a Net::HTTP wrapper -- that's where the name from. Then when the third script appeared two of them had to pass the Basic Auth. The verb POST was added and common logging format, and relatively complex retry logic. Then some website had redirects and I had to store cookies, then GZIP and API rate limits... I was not going to gemify this monster but it is now a dependency in many other gems, and since Gemfile does not support Github dependencies I have to finally gemify it.
google-api-customization is a Ruby wrapper around the Google Places API that makes it easy to integrate place discovery into Rails applications. Features: - Place detail lookup by place ID (name, address, phone, rating, hours, photos, reviews) - Text search for places by query string with optional location bias - Nearby search by coordinates and radius - Autocomplete for place names and addresses - Photo URL resolution - Full error handling (OverQueryLimitError, RequestDeniedError, NotFoundError, etc.) - Configurable retry logic with delay Built on HTTParty for HTTP and supports the legacy Google Places API endpoints.
Miscellaneous methods that may or may not be useful. sh:: Safely pass untrusted parameters to sh scripts. Raise an exception if the script returns a non-zero value. fork_and_check:: Run a block in a forked process and raise an exception if the process returns a non-zero value. do_and_exit, do_and_exit!:: Run a block. If the block does not run exit!, a successful exec or equivalent, run exit(1) or exit!(1) ourselves. Useful to make sure a forked block either runs a successful exec or dies. Any exceptions from the block are printed to standard error. overwrite:: Safely replace a file. Writes to a temporary file and then moves it over the old file. tempname_for:: Generates an unique temporary path based on a filename. The generated filename resides in the same directory as the original one. try_n_times:: Retries a block of code until it succeeds or a maximum number of attempts (default 10) is exceeded. Exception#to_formatted_string:: Return a string that looks like how Ruby would dump an uncaught exception. IO#best_datasync:: Try fdatasync, falling back to fsync, falling back to flush. Random#exp:: Return a random integer 0 ≤ n < 2^argument (using SecureRandom). Random#float:: Return a random float 0.0 ≤ n < argument (using SecureRandom). Random#int:: Return a random integer 0 ≤ n < argument (using SecureRandom). Password:: A small wrapper for String#crypt that does secure salt generation and easy password verification.
This is an experimental branch that implements a connection pool of Net::HTTP objects instead of a connection/thread. C/T is fine if you're only using your http threads to make connections but if you use them in child threads then I suspect you will have a thread memory leak. Also, I want to see if I get less connection resets if the most recently used connection is always returned. Also added a :force_retry option that if set to true will retry POST requests as well as idempotent requests. This branch is currently incompatible with the master branch in the following ways: * It doesn't allow you to recreate the Net::HTTP::Persistent object on the fly. This is possible in the master version since all the data is kept in thread local storage. For this version, you should probably create a class instance of the object and use that in your instance methods. * It uses a hash in the initialize method. This was easier for me as I use a HashWithIndifferentAccess created from a YAML file to define my options. This should probably be modified to check the arguments to achieve backwards compatibility. * The method shutdown is unimplemented as I wasn't sure how I should implement it and I don't need it as I do a graceful shutdown from nginx to finish up my connections. For connection issues, I completely recreate a new Net::HTTP instance. I was running into an issue which I suspect is a JRuby bug where an SSL connection that times out would leave the ssl context in a frozen state which would then make that connection unusable so each time that thread handled a connection a 500 error with the exception "TypeError: can't modify frozen". I think Joseph West's fork resolves this issue but I'm paranoid so I recreate the object. Compatibility with the master version could probably be achieved by creating a Strategy wrapper class for GenePool and a separate strategy class with the connection/thread implementation.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.