设置Gitee的Webhooks 到Vercel.com 网站后,因为API只能运行10秒,许多任务没有办法正常完成。为了突破限制,可以采用多次请求来完成任务,8+8+8等, 达到24秒以上。
一、先看一下效果:
二、实现代码如下:
import buildPage from 'gitee-pages-build'; import fetch from 'node-fetch' import sleep from 'sleep-anywhere' import URLSearchParams from 'url-search-params' export default async function handler(req, res) { console.log(req.url); let currentStep = parseInt(req.query.step || '1'); let state = req.query.state; await doAction(req); res.status(200).json({step: currentStep, code:0, msg:"ok"}) } async function doAction(req){ //add your code here... console.log('your code here...',new Date()) await sleep(5000); console.log('end code here...',new Date()) // do next step action to get more cpu time let currentStep = parseInt(req.query.step || '1'); if(currentStep < 3){ let state = {currentStep:currentStep} // start next time ,to get more time await doNext(currentStep + 1, state); } else{ console.log('finished...') } } async function doNext(step,state){ let url = process.env.API_PAGE_BUILD_SELF_URI || 'http://localhost:3000/api/pagebuild'; let query = new URLSearchParams({ step:step , state: JSON.stringify(state)}).toString(); let queryUri = url + '?' + query; console.log('doNext ', queryUri, step, state); fetch(queryUri) await sleep(1000); }