国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

關(guān)于webman請(qǐng)求問(wèn)題

mings

問(wèn)題描述

現(xiàn)在手上有個(gè)項(xiàng)目,數(shù)據(jù)均為通過(guò)http查詢(xún)第三方再返回給客戶端。
其中有兩個(gè)產(chǎn)品查詢(xún)的API,對(duì)方文檔建議通過(guò)如下方式調(diào)用:
1、並行發(fā)起兩個(gè)或以上查詢(xún);
2、當(dāng)獲取到status=complete或超出3秒終止查詢(xún)。

實(shí)際上現(xiàn)在測(cè)試出結(jié)果如下:
第一次請(qǐng)求----500ms,返回結(jié)果空,status=in-process
第二次請(qǐng)求----900ms,返回結(jié)果空,status=in-process
.....
第五次請(qǐng)求----3000ms,返回10條數(shù)據(jù),status=complete

想咨詢(xún),
如何通過(guò)webman如何能同時(shí)發(fā)出2個(gè)并行請(qǐng)求,并且需要限制總請(qǐng)求時(shí)間,還有需要把結(jié)果返回給前端?
nodeJs下我想到的方法如下:

const getList = (keyword) => {
    retrun new Promise(resolve => {
        fetch(`/resource-list/${keyword}`).then(res => {
            if(res.status === 'complete'){
                resolve(res)
            }else{
                setTimeout(async () => {
                    resolve(await getList(keyword))
                },250)
            }
        })
    })
}
const race = Promise.race([
    getList('aaa'),
    getList('aaa'),
    new Promise((resolve,reject) => {
        setTimeout(() => reject(new Error('request timeout')),3000)
    })
])

2、另外想咨詢(xún)下,如果部分?jǐn)?shù)據(jù)為第三方提供,部分?jǐn)?shù)據(jù)為數(shù)據(jù)庫(kù)查詢(xún),大家有好的方法進(jìn)行數(shù)據(jù)匯聚嗎?(主要考慮分頁(yè)問(wèn)題)

1099 1 1
1個(gè)回答

mings

問(wèn)題一已經(jīng)解決了。暫時(shí)使用nodeJs代理請(qǐng)求,
nodeJs處理第三方api查詢(xún),類(lèi)似上面的偽代碼,限制了3s內(nèi)必定返回或返回部分查詢(xún)結(jié)果。
整體流程大概是:client -> webman(curl) -> nodeJs(local) -> API;
論壇上也找到了一些相關(guān)的,如通過(guò)webman的process自定義進(jìn)程進(jìn)行查詢(xún)或者通過(guò)swoole驅(qū)動(dòng),或通過(guò)reactPHP來(lái)達(dá)到目的,但由于對(duì)以上不熟悉,不知道是否可以類(lèi)似nodeJs這樣去弄,所以放棄了。

問(wèn)題二:暫時(shí)還是想不到什么好的解決方案。

  • 暫無(wú)評(píng)論
年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??