nodejs使用got库发送http请求超时重试
时间: 2024-10-24 18:10:23 浏览: 42
Node.js 中使用 `got` 库发送 HTTP 请求时,你可以通过设置超时时间和重试策略来处理网络不稳定导致的超时情况。`got` 提供了灵活的配置选项,比如 `timeout` 和 `retry` 属性。
首先,安装 `got` 包:
```bash
npm install got
```
然后,在你的代码里,你可以这样做:
```javascript
const got = require('got');
async function sendRequest(url) {
const options = {
method: 'GET', // 或者其他方法如 'POST', 'PUT'
url,
timeout: 5000, // 设置默认超时时间,单位为毫秒(5秒)
retry: {
retries: 3, // 设置最大重试次数
factor: 2, // 每次失败后的等待时间翻倍
minTimeout: 1000, // 最小重试间隔
maxTimeout: 60000, // 最大重试间隔
},
};
try {
const response = await got(options);
return response.body;
} catch (error) {
if (error.timedOut && error.retryable) { // 如果超时且可以重试
console.log('请求超时,尝试重新发送...');
return sendRequest(url); // 调用自身再次发送请求
} else {
throw error; // 其他非重试错误直接抛出
}
}
}
// 使用示例
sendRequest('https://example.com')
.then(data => console.log(data))
.catch(err => console.error('请求失败:', err));
阅读全文