diff --git a/config.js b/config.js index bb692d53d..70c2e1135 100644 --- a/config.js +++ b/config.js @@ -4,6 +4,7 @@ module.exports = { cacheExpire: process.env.CACHE_EXPIRE || 5 * 60, // 缓存时间,单位为秒 ua: process.env.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: process.env.LISTEN_INADDR_ANY || 1, // 是否允许公网连接,取值 0 1 + requestRetry: process.env.REQUEST_RETRY || 2, // 请求失败重试次数 redis: { url: process.env.REDIS_URL || 'redis://localhost:6379/', options: { diff --git a/package.json b/package.json index e70fded19..47ff067d5 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "dependencies": { "art-template": "4.12.2", "axios": "0.18.0", + "axios-retry": "3.1.0", "cheerio": "1.0.0-rc.2", "co-redis": "2.1.1", "crypto": "1.0.1", diff --git a/routes/bilibili/bangumi.js b/routes/bilibili/bangumi.js index 68f01f9d4..c8d92f9fa 100644 --- a/routes/bilibili/bangumi.js +++ b/routes/bilibili/bangumi.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const config = require('../../config'); module.exports = async (ctx) => { diff --git a/routes/bilibili/coin.js b/routes/bilibili/coin.js index f24265841..99f62c7d6 100644 --- a/routes/bilibili/coin.js +++ b/routes/bilibili/coin.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const qs = require('querystring'); const config = require('../../config'); diff --git a/routes/bilibili/dynamic.js b/routes/bilibili/dynamic.js index a3bd2ec58..ffbe4208c 100644 --- a/routes/bilibili/dynamic.js +++ b/routes/bilibili/dynamic.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const JSONbig = require('json-bigint'); const config = require('../../config'); diff --git a/routes/bilibili/fav.js b/routes/bilibili/fav.js index 776e0f03c..486d1b141 100644 --- a/routes/bilibili/fav.js +++ b/routes/bilibili/fav.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const qs = require('querystring'); const config = require('../../config'); diff --git a/routes/bilibili/followers.js b/routes/bilibili/followers.js index 532c7233b..83f5616b8 100644 --- a/routes/bilibili/followers.js +++ b/routes/bilibili/followers.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const qs = require('querystring'); const config = require('../../config'); diff --git a/routes/bilibili/followings.js b/routes/bilibili/followings.js index 0a9dba627..4aa655c6a 100644 --- a/routes/bilibili/followings.js +++ b/routes/bilibili/followings.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const qs = require('querystring'); const config = require('../../config'); diff --git a/routes/bilibili/linkNews.js b/routes/bilibili/linkNews.js index 58938755d..08d75d5cd 100644 --- a/routes/bilibili/linkNews.js +++ b/routes/bilibili/linkNews.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const config = require('../../config'); module.exports = async (ctx) => { diff --git a/routes/bilibili/liveArea.js b/routes/bilibili/liveArea.js index d5345ad55..72f93e20a 100644 --- a/routes/bilibili/liveArea.js +++ b/routes/bilibili/liveArea.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const config = require('../../config'); module.exports = async (ctx) => { diff --git a/routes/bilibili/liveRoom.js b/routes/bilibili/liveRoom.js index 5496c3bcf..64d894e0c 100644 --- a/routes/bilibili/liveRoom.js +++ b/routes/bilibili/liveRoom.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const config = require('../../config'); module.exports = async (ctx) => { diff --git a/routes/bilibili/liveSearch.js b/routes/bilibili/liveSearch.js index 68fa1e6b8..23b24edfd 100644 --- a/routes/bilibili/liveSearch.js +++ b/routes/bilibili/liveSearch.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const config = require('../../config'); module.exports = async (ctx) => { diff --git a/routes/bilibili/partion.js b/routes/bilibili/partion.js index a4e5ed359..abfbf9681 100644 --- a/routes/bilibili/partion.js +++ b/routes/bilibili/partion.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const config = require('../../config'); module.exports = async (ctx) => { diff --git a/routes/bilibili/reply.js b/routes/bilibili/reply.js index ad0fa5006..cb4d4671e 100644 --- a/routes/bilibili/reply.js +++ b/routes/bilibili/reply.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const config = require('../../config'); const cheerio = require('cheerio'); const iconv = require('iconv-lite'); diff --git a/routes/bilibili/video.js b/routes/bilibili/video.js index b6b367f7c..4fda700df 100644 --- a/routes/bilibili/video.js +++ b/routes/bilibili/video.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const qs = require('querystring'); const config = require('../../config'); diff --git a/routes/biquge/chapter.js b/routes/biquge/chapter.js index 1d3fb107d..c055ea4e8 100644 --- a/routes/biquge/chapter.js +++ b/routes/biquge/chapter.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const cheerio = require('cheerio'); const config = require('../../config'); const iconv = require('iconv-lite'); diff --git a/routes/cctv/category.js b/routes/cctv/category.js index c75f75a20..d55a550a1 100644 --- a/routes/cctv/category.js +++ b/routes/cctv/category.js @@ -1,22 +1,21 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const config = require('../../config'); module.exports = async (ctx) => { const category = ctx.params.category; - const url = `http://news.cctv.com/${category}/data/index.json` + const url = `http://news.cctv.com/${category}/data/index.json`; const response = await axios({ method: 'get', url: url, headers: { 'User-Agent': config.ua, - 'Referer': url, - } + Referer: url, + }, }); const data = response.data; const list = data.rollData; - const article_item = []; ctx.state.data = { title: `央视新闻 ${category}`, @@ -26,7 +25,7 @@ module.exports = async (ctx) => { title: item.title, description: item.description, link: item.url, - pubDate: new Date(item.dateTime).toUTCString() + pubDate: new Date(item.dateTime).toUTCString(), })), }; }; diff --git a/routes/dapenti/tugua.js b/routes/dapenti/tugua.js index 2a18a81e7..379f08dd5 100644 --- a/routes/dapenti/tugua.js +++ b/routes/dapenti/tugua.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const cheerio = require('cheerio'); const config = require('../../config'); const iconv = require('iconv-lite'); diff --git a/routes/disqus/posts.js b/routes/disqus/posts.js index 44636afa3..664ff32ad 100644 --- a/routes/disqus/posts.js +++ b/routes/disqus/posts.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const config = require('../../config'); module.exports = async (ctx) => { diff --git a/routes/dockone/weekly.js b/routes/dockone/weekly.js index fa2534e09..1e702c787 100644 --- a/routes/dockone/weekly.js +++ b/routes/dockone/weekly.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const cheerio = require('cheerio'); const config = require('../../config'); diff --git a/routes/douban/later.js b/routes/douban/later.js index 024364065..62c3053a2 100644 --- a/routes/douban/later.js +++ b/routes/douban/later.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); module.exports = async (ctx) => { const response = await axios({ diff --git a/routes/douban/playing.js b/routes/douban/playing.js index b71c02281..e231edb8c 100644 --- a/routes/douban/playing.js +++ b/routes/douban/playing.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); module.exports = async (ctx) => { const city = ctx.params.city; diff --git a/routes/douban/ustop.js b/routes/douban/ustop.js index c22745a60..05b824a7f 100644 --- a/routes/douban/ustop.js +++ b/routes/douban/ustop.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); module.exports = async (ctx) => { const response = await axios({ diff --git a/routes/express/express.js b/routes/express/express.js index eabfe11ee..f5ab596da 100644 --- a/routes/express/express.js +++ b/routes/express/express.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const config = require('../../config'); module.exports = async (ctx) => { diff --git a/routes/geektime/column.js b/routes/geektime/column.js index ca97c8067..c89b0e430 100644 --- a/routes/geektime/column.js +++ b/routes/geektime/column.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const config = require('../../config'); module.exports = async (ctx) => { diff --git a/routes/instagram/user.js b/routes/instagram/user.js index 0e3951f7b..b007e908a 100644 --- a/routes/instagram/user.js +++ b/routes/instagram/user.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const cheerio = require('cheerio'); const config = require('../../config'); diff --git a/routes/iqiyi/dongman.js b/routes/iqiyi/dongman.js index 74310374b..295c9dea6 100644 --- a/routes/iqiyi/dongman.js +++ b/routes/iqiyi/dongman.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const cheerio = require('cheerio'); const config = require('../../config'); diff --git a/routes/jandan/pic.js b/routes/jandan/pic.js index aba3ec265..d38d6a7f0 100644 --- a/routes/jandan/pic.js +++ b/routes/jandan/pic.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const cheerio = require('cheerio'); const crypto = require('crypto'); const config = require('../../config'); diff --git a/routes/jianshu/collection.js b/routes/jianshu/collection.js index d30e7d540..73bf75cf2 100644 --- a/routes/jianshu/collection.js +++ b/routes/jianshu/collection.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const cheerio = require('cheerio'); const config = require('../../config'); diff --git a/routes/jianshu/home.js b/routes/jianshu/home.js index de6352487..70f2257c1 100644 --- a/routes/jianshu/home.js +++ b/routes/jianshu/home.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const cheerio = require('cheerio'); const config = require('../../config'); diff --git a/routes/jianshu/monthly.js b/routes/jianshu/monthly.js index a14fc2408..0ede451c3 100644 --- a/routes/jianshu/monthly.js +++ b/routes/jianshu/monthly.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const cheerio = require('cheerio'); const config = require('../../config'); diff --git a/routes/jianshu/user.js b/routes/jianshu/user.js index 2f6f49e13..6d91722fa 100644 --- a/routes/jianshu/user.js +++ b/routes/jianshu/user.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const cheerio = require('cheerio'); const config = require('../../config'); diff --git a/routes/jianshu/weekly.js b/routes/jianshu/weekly.js index a7283f94b..ce053b2dc 100644 --- a/routes/jianshu/weekly.js +++ b/routes/jianshu/weekly.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const cheerio = require('cheerio'); const config = require('../../config'); diff --git a/routes/jike/topic.js b/routes/jike/topic.js index 689ea41f8..acee1cbc2 100644 --- a/routes/jike/topic.js +++ b/routes/jike/topic.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const config = require('../../config'); module.exports = async (ctx) => { diff --git a/routes/jike/user.js b/routes/jike/user.js index 5762c816b..1a3f9d191 100644 --- a/routes/jike/user.js +++ b/routes/jike/user.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const config = require('../../config'); module.exports = async (ctx) => { diff --git a/routes/juejin/category.js b/routes/juejin/category.js index 5bd63343f..d76ed8670 100644 --- a/routes/juejin/category.js +++ b/routes/juejin/category.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const config = require('../../config'); module.exports = async (ctx) => { diff --git a/routes/mzitu/category.js b/routes/mzitu/category.js index 2f1246f46..9d9a56c42 100644 --- a/routes/mzitu/category.js +++ b/routes/mzitu/category.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const cheerio = require('cheerio'); const config = require('../../config'); diff --git a/routes/mzitu/post.js b/routes/mzitu/post.js index 890d534ba..25b956d65 100644 --- a/routes/mzitu/post.js +++ b/routes/mzitu/post.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const cheerio = require('cheerio'); const config = require('../../config'); diff --git a/routes/mzitu/tag.js b/routes/mzitu/tag.js index 2981b88aa..f5c2e48f2 100644 --- a/routes/mzitu/tag.js +++ b/routes/mzitu/tag.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const cheerio = require('cheerio'); const config = require('../../config'); diff --git a/routes/mzitu/tags.js b/routes/mzitu/tags.js index d94152b01..bff38c950 100644 --- a/routes/mzitu/tags.js +++ b/routes/mzitu/tags.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const cheerio = require('cheerio'); const config = require('../../config'); diff --git a/routes/ncm/artist.js b/routes/ncm/artist.js index a3f5b8fcd..63585caba 100644 --- a/routes/ncm/artist.js +++ b/routes/ncm/artist.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const config = require('../../config'); module.exports = async (ctx) => { diff --git a/routes/ncm/playlist.js b/routes/ncm/playlist.js index 27e511ba9..06d9e1cd1 100644 --- a/routes/ncm/playlist.js +++ b/routes/ncm/playlist.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const qs = require('querystring'); const config = require('../../config'); diff --git a/routes/ncm/userplaylist.js b/routes/ncm/userplaylist.js index 8e44fb16f..7d6ae45c9 100644 --- a/routes/ncm/userplaylist.js +++ b/routes/ncm/userplaylist.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const qs = require('querystring'); const config = require('../../config'); diff --git a/routes/pixiv/api/getBookmarks.js b/routes/pixiv/api/getBookmarks.js index fd6aa22ce..c6916d80c 100644 --- a/routes/pixiv/api/getBookmarks.js +++ b/routes/pixiv/api/getBookmarks.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../../utils/axios'); const maskHeader = require('../constants').maskHeader; /** diff --git a/routes/pixiv/api/getIllusts.js b/routes/pixiv/api/getIllusts.js index 5462159d2..84df65460 100644 --- a/routes/pixiv/api/getIllusts.js +++ b/routes/pixiv/api/getIllusts.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../../utils/axios'); const maskHeader = require('../constants').maskHeader; /** diff --git a/routes/pixiv/api/getRanking.js b/routes/pixiv/api/getRanking.js index ab74839ac..cb570eced 100644 --- a/routes/pixiv/api/getRanking.js +++ b/routes/pixiv/api/getRanking.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../../utils/axios'); const maskHeader = require('../constants').maskHeader; const assert = require('assert'); diff --git a/routes/pixiv/api/getUserDetail.js b/routes/pixiv/api/getUserDetail.js index f6d4fbb67..a478a4ba5 100644 --- a/routes/pixiv/api/getUserDetail.js +++ b/routes/pixiv/api/getUserDetail.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../../utils/axios'); const maskHeader = require('../constants').maskHeader; /** diff --git a/routes/pixiv/token.js b/routes/pixiv/token.js index ffe665a2a..e3f90111b 100644 --- a/routes/pixiv/token.js +++ b/routes/pixiv/token.js @@ -2,7 +2,7 @@ const config = require('../../config'); const logger = require('../../utils/logger'); const wait = require('../../utils/wait'); const FormData = require('form-data'); -const axios = require('axios'); +const axios = require('../../utils/axios'); const maskHeader = require('./constants').maskHeader; const pixivConfig = config.pixiv; @@ -29,13 +29,18 @@ async function getToken() { data.append(key, element); } } - const response = await axios.post('https://oauth.secure.pixiv.net/auth/token', data, { + const response = await axios({ + method: 'post', + url: 'https://oauth.secure.pixiv.net/auth/token', + data: data, headers: { ...maskHeader, ...data.getHeaders(), }, + }).catch(function() { + logger.error('Pixiv login fail.'); }); - return response.data.response; + return response && response.data && response.data.response; } async function refreshToken(refresh_token) { @@ -63,22 +68,24 @@ async function refreshToken(refresh_token) { async function tokenLoop() { const res = await getToken(); - logger.info('Pixiv login success.'); - token = res.access_token; - let refresh_token = res.refresh_token; - let expires_in = res.expires_in * 0.9; - // eslint-disable-next-line no-constant-condition - while (true) { - await wait(expires_in * 1000); - try { - const refresh_res = await refreshToken(refresh_token); - logger.debug('Pixiv refresh token success.'); - token = refresh_res.access_token; - refresh_token = refresh_res.refresh_token; - expires_in = refresh_res.expires_in * 0.9; - } catch (err) { - expires_in = 30; - logger.err(`Pixiv refresh token failed, retry in ${expires_in} seconds.`, err); + if (res) { + logger.info('Pixiv login success.'); + token = res.access_token; + let refresh_token = res.refresh_token; + let expires_in = res.expires_in * 0.9; + // eslint-disable-next-line no-constant-condition + while (true) { + await wait(expires_in * 1000); + try { + const refresh_res = await refreshToken(refresh_token); + logger.debug('Pixiv refresh token success.'); + token = refresh_res.access_token; + refresh_token = refresh_res.refresh_token; + expires_in = refresh_res.expires_in * 0.9; + } catch (err) { + expires_in = 30; + logger.err(`Pixiv refresh token failed, retry in ${expires_in} seconds.`, err); + } } } } diff --git a/routes/rsshub/rss.js b/routes/rsshub/rss.js index 0587b683c..aba978041 100644 --- a/routes/rsshub/rss.js +++ b/routes/rsshub/rss.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const cheerio = require('cheerio'); const config = require('../../config'); diff --git a/routes/tieba/forum.js b/routes/tieba/forum.js index 10409ecda..f4effb64f 100644 --- a/routes/tieba/forum.js +++ b/routes/tieba/forum.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const cheerio = require('cheerio'); const config = require('../../config'); diff --git a/routes/toutiao/today.js b/routes/toutiao/today.js index 9acd9ce6d..cddc3f204 100644 --- a/routes/toutiao/today.js +++ b/routes/toutiao/today.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const cheerio = require('cheerio'); const config = require('../../config'); diff --git a/routes/toutiao/user.js b/routes/toutiao/user.js index a5138ab69..678da62c0 100644 --- a/routes/toutiao/user.js +++ b/routes/toutiao/user.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const cheerio = require('cheerio'); const config = require('../../config'); diff --git a/routes/tucaoqq/post.js b/routes/tucaoqq/post.js index c0156628d..627139000 100644 --- a/routes/tucaoqq/post.js +++ b/routes/tucaoqq/post.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const config = require('../../config'); const md5 = require('../../utils/md5'); diff --git a/routes/weibo/keyword.js b/routes/weibo/keyword.js index b900ebeea..e9ece32d3 100644 --- a/routes/weibo/keyword.js +++ b/routes/weibo/keyword.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const config = require('../../config'); const weiboUtils = require('./utils'); diff --git a/routes/weibo/user.js b/routes/weibo/user.js index f670a0172..715158c9a 100644 --- a/routes/weibo/user.js +++ b/routes/weibo/user.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const config = require('../../config'); const weiboUtils = require('./utils'); diff --git a/routes/weibo/user2.js b/routes/weibo/user2.js index 62d750f4a..3e34bf357 100644 --- a/routes/weibo/user2.js +++ b/routes/weibo/user2.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const cheerio = require('cheerio'); const config = require('../../config'); const weiboUtils = require('./utils'); diff --git a/routes/zhihu/activities.js b/routes/zhihu/activities.js index 4dea4c4bd..ba2d221c1 100644 --- a/routes/zhihu/activities.js +++ b/routes/zhihu/activities.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const config = require('../../config'); module.exports = async (ctx) => { diff --git a/routes/zhihu/answers.js b/routes/zhihu/answers.js index 52eae9f32..fae692bc6 100644 --- a/routes/zhihu/answers.js +++ b/routes/zhihu/answers.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const config = require('../../config'); module.exports = async (ctx) => { diff --git a/routes/zhihu/collection.js b/routes/zhihu/collection.js index a2d59cfc2..112a933e1 100644 --- a/routes/zhihu/collection.js +++ b/routes/zhihu/collection.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const cheerio = require('cheerio'); const config = require('../../config'); diff --git a/routes/zhihu/daily.js b/routes/zhihu/daily.js index 014d9180b..f1638bce5 100644 --- a/routes/zhihu/daily.js +++ b/routes/zhihu/daily.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const config = require('../../config'); // 参考:https://github.com/izzyleung/ZhihuDailyPurify/wiki/%E7%9F%A5%E4%B9%8E%E6%97%A5%E6%8A%A5-API-%E5%88%86%E6%9E%90 diff --git a/routes/zhihu/zhuanlan.js b/routes/zhihu/zhuanlan.js index dff6c9e4e..a4fddcaa1 100644 --- a/routes/zhihu/zhuanlan.js +++ b/routes/zhihu/zhuanlan.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const config = require('../../config'); module.exports = async (ctx) => { diff --git a/routes/ziroom/room.js b/routes/ziroom/room.js index 3eccebb09..c7d9bcf2d 100644 --- a/routes/ziroom/room.js +++ b/routes/ziroom/room.js @@ -1,4 +1,4 @@ -const axios = require('axios'); +const axios = require('../../utils/axios'); const qs = require('querystring'); const config = require('../../config'); diff --git a/utils/axios.js b/utils/axios.js new file mode 100644 index 000000000..842af2a7f --- /dev/null +++ b/utils/axios.js @@ -0,0 +1,16 @@ +const logger = require('./logger'); +const config = require('../config'); + +const axiosRetry = require('axios-retry'); +const axios = require('axios'); + +axiosRetry(axios, { + retries: config.requestRetry, + retryCondition: () => true, + retryDelay: (count, err) => { + logger.error(`Request ${err.config.url} fail, retry attempt #${count}: ${err}`); + return 100; + }, +}); + +module.exports = axios; diff --git a/yarn.lock b/yarn.lock index 30cbeec81..5194bb563 100644 --- a/yarn.lock +++ b/yarn.lock @@ -504,6 +504,12 @@ aws4@^1.6.0: version "1.7.0" resolved "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz#d4d0e9b9dbfca77bf08eeb0a8a471550fe39e289" +axios-retry@3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/axios-retry/-/axios-retry-3.1.0.tgz#00d911e989a8c082a0acf8b90668cfa12733d736" + dependencies: + is-retry-allowed "^1.1.0" + axios@0.18.0, axios@^0.18.0: version "0.18.0" resolved "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz#32d53e4851efdc0a11993b6cd000789d70c05102" @@ -3157,7 +3163,7 @@ is-resolvable@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" -is-retry-allowed@^1.0.0: +is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34"