![PyPI Now Supports iOS and Android Wheels for Mobile Python Development](https://cdn.sanity.io/images/cgdhsj6q/production/96416c872705517a6a65ad9646ce3e7caef623a0-1024x1024.webp?w=400&fit=max&auto=format)
Security News
PyPI Now Supports iOS and Android Wheels for Mobile Python Development
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
@doruk/fetch-retry
Advanced tools
Adds retry functionality to the Fetch
API.
It wraps any Fetch
API package (eg: isomorphic-fetch, cross-fetch, isomorphic-unfetch and etc.) and retries requests that fail due to network issues. It can also be configured to retry requests on specific HTTP status codes.
npm install fetch-retry --save
fetch-retry
is used the same way as fetch
, but also accepts retries
, retryDelay
, and retryOn
on the options
object.
These properties are optional, and unless different defaults have been specified when requiring fetch-retry
, these will default to 3 retries, with a 1000ms retry delay, and to only retry on network errors.
require('es6-promise').polyfill();
var originalFetch = require('isomorphic-fetch');
var fetch = require('fetch-retry')(originalFetch);
fetch(url, {
retries: 3,
retryDelay: 1000
})
.then(function(response) {
return response.json();
})
.then(function(json) {
// do something with the result
console.log(json);
});
or passing your own defaults:
var originalFetch = require('isomorphic-fetch');
var fetch = require('fetch-retry')(originalFetch, {
retries: 5,
retryDelay: 800
});
fetch-retry
uses promises and requires you to polyfill the Promise API in order to support Internet Explorer.
The default behavior of fetch-retry
is to wait a fixed amount of time between attempts, but it is also possible to customize this by passing a function as the retryDelay
option. The function is supplied three arguments: attempt
(starting at 0), error
(in case of a network error), and response
. It must return a number indicating the delay.
fetch(url, {
retryDelay: function(attempt, error, response) {
return Math.pow(2, attempt) * 1000; // 1000, 2000, 4000
}
}).then(function(response) {
return response.json();
}).then(function(json) {
// do something with the result
console.log(json);
});
The default behavior of fetch-retry
is to only retry requests on network related issues, but it is also possible to configure it to retry on specific HTTP status codes. This is done by using the retryOn
property, which expects an array of HTTP status codes.
fetch(url, {
retryOn: [503]
})
.then(function(response) {
return response.json();
})
.then(function(json) {
// do something with the result
console.log(json);
});
The retryOn
option may also be specified as a function, in which case it will be supplied three arguments: attempt
(starting at 0), error
(in case of a network error), and response
. Return a truthy value from this function in order to trigger a retry, any falsy value will result in the call to fetch either resolving (in case the last attempt resulted in a response), or rejecting (in case the last attempt resulted in an error).
fetch(url, {
retryOn: function(attempt, error, response) {
// retry on any network error, or 4xx or 5xx status codes
if (error !== null || response.status >= 400) {
console.log(`retrying, attempt number ${attempt + 1}`);
return true;
}
})
.then(function(response) {
return response.json();
}).then(function(json) {
// do something with the result
console.log(json);
});
FAQs
Extend any fetch library with retry functionality
The npm package @doruk/fetch-retry receives a total of 0 weekly downloads. As such, @doruk/fetch-retry popularity was classified as not popular.
We found that @doruk/fetch-retry demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
Security News
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.