mirror of
https://github.com/DIYgod/RSSHub.git
synced 2025-12-03 18:48:12 +08:00
feat: got request timeout
This commit is contained in:
@@ -421,6 +421,8 @@ See the relation between access key/code and white/blacklisting.
|
|||||||
|
|
||||||
`REQUEST_RETRY`: retries allowed for failed requests, default to `2`
|
`REQUEST_RETRY`: retries allowed for failed requests, default to `2`
|
||||||
|
|
||||||
|
`REQUEST_TIMEOUT`: milliseconds to wait for the server to end the response before aborting the request with error, default to `3000`
|
||||||
|
|
||||||
`DEBUG_INFO`: display route information on homepage for debugging purpose. When set to neither `true` nor `false`, use parameter `debug` to enable display, eg: <https://rsshub.app/?debug=value_of_DEBUG_INFO> . Default to `true`
|
`DEBUG_INFO`: display route information on homepage for debugging purpose. When set to neither `true` nor `false`, use parameter `debug` to enable display, eg: <https://rsshub.app/?debug=value_of_DEBUG_INFO> . Default to `true`
|
||||||
|
|
||||||
`NODE_ENV`: display error message on pages for authentication failing, default to `production` (i.e. no display)
|
`NODE_ENV`: display error message on pages for authentication failing, default to `production` (i.e. no display)
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ const calculateValue = () => {
|
|||||||
ua: envs.UA || 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
|
ua: envs.UA || 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
|
||||||
listenInaddrAny: envs.LISTEN_INADDR_ANY || 1, // 是否允许公网连接,取值 0 1
|
listenInaddrAny: envs.LISTEN_INADDR_ANY || 1, // 是否允许公网连接,取值 0 1
|
||||||
requestRetry: parseInt(envs.REQUEST_RETRY) || 2, // 请求失败重试次数
|
requestRetry: parseInt(envs.REQUEST_RETRY) || 2, // 请求失败重试次数
|
||||||
|
requestTimeout: parseInt(envs.REQUEST_TIMEOUT) || 30000, // Milliseconds to wait for the server to end the response before aborting the request
|
||||||
// 是否显示 Debug 信息,取值 'true' 'false' 'some_string' ,取值为 'true' 时永久显示,取值为 'false' 时永远隐藏,取值为 'some_string' 时请求带上 '?debug=some_string' 显示
|
// 是否显示 Debug 信息,取值 'true' 'false' 'some_string' ,取值为 'true' 时永久显示,取值为 'false' 时永远隐藏,取值为 'some_string' 时请求带上 '?debug=some_string' 显示
|
||||||
debugInfo: envs.DEBUG_INFO || 'true',
|
debugInfo: envs.DEBUG_INFO || 'true',
|
||||||
disallowRobot: envs.DISALLOW_ROBOT !== '0' && envs.DISALLOW_ROBOT !== 'false',
|
disallowRobot: envs.DISALLOW_ROBOT !== '0' && envs.DISALLOW_ROBOT !== 'false',
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ const custom = got.extend({
|
|||||||
headers: {
|
headers: {
|
||||||
'user-agent': config.ua,
|
'user-agent': config.ua,
|
||||||
},
|
},
|
||||||
|
timeout: config.requestTimeout,
|
||||||
});
|
});
|
||||||
custom.all = (list) => Promise.all(list);
|
custom.all = (list) => Promise.all(list);
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,12 @@
|
|||||||
|
process.env.REQUEST_TIMEOUT = '500';
|
||||||
const got = require('../../lib/utils/got');
|
const got = require('../../lib/utils/got');
|
||||||
const config = require('../../lib/config').value;
|
const config = require('../../lib/config').value;
|
||||||
const nock = require('nock');
|
const nock = require('nock');
|
||||||
|
|
||||||
|
afterAll(() => {
|
||||||
|
delete process.env.REQUEST_TIMEOUT;
|
||||||
|
});
|
||||||
|
|
||||||
describe('got', () => {
|
describe('got', () => {
|
||||||
it('headers', async () => {
|
it('headers', async () => {
|
||||||
nock('http://rsshub.test')
|
nock('http://rsshub.test')
|
||||||
@@ -51,4 +56,20 @@ describe('got', () => {
|
|||||||
expect(response1.body).toBe('{"code": 0}');
|
expect(response1.body).toBe('{"code": 0}');
|
||||||
expect(response1.data.code).toBe(0);
|
expect(response1.data.code).toBe(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('timeout', async () => {
|
||||||
|
nock('http://rsshub.test')
|
||||||
|
.get('/timeout')
|
||||||
|
.delay(600)
|
||||||
|
.reply(function () {
|
||||||
|
return [200, '{"code": 0}'];
|
||||||
|
});
|
||||||
|
|
||||||
|
try {
|
||||||
|
await got.get('http://rsshub.test/timeout');
|
||||||
|
throw Error('Timeout Invalid');
|
||||||
|
} catch (error) {
|
||||||
|
expect(error.name).toBe('RequestError');
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user