我正在對Windows 7 64位操作系統中包含大量數據的數據庫進行一堆調用。由於呼叫排隊我的錯誤(第一個錯誤之後曾經HTTP調用):有人可以解釋一個ENOBUFS錯誤嗎?
Error: connect ENOBUFS *omitted* - Local (undefined:undefined)
從我的谷歌搜索我已經學會了這個錯誤意味着我的緩衝區已經長得太大,我的系統內存不能再處理緩衝區的大小。
但我真的不明白這是什麼意思。我使用node.js和HTTPS庫來處理我的請求。當請求排隊並且套接字打開時,緩衝區的大小是在RAM中分配的嗎?什麼可以讓緩衝區擴大到更大的尺寸?這僅僅是一個硬件限制嗎?
我也讀過一些操作系統能夠比其他操作系統更好地處理緩衝區的大小。是這樣嗎?如果是的話哪個操作系統更適合運行節點腳本,需要通過HTTPS請求獲取很多的數據?
以下是我如何處理我的請求。
for (let j = 0; j < dataQueries; j++) {
getData(function())
}
function getData(callback){
axios.get(url, config)
.then((res) => {
// parse res
callback(parsedRes(res))
}).catch(function(err) {
console.log("Spooky problem alert! : " + err);
})
}
爲了簡潔,我省略了一些代碼,但這通常是我如何處理我的請求。我有一個for循環,每次迭代都會通過axios啓動GET請求。
我知道有一個axios.all命令用於存儲axios.HTTPMethod給你的承諾,但是當我將它設置爲存儲承諾並通過承諾進行迭代時,我看到代碼中沒有任何更改axios.all
可能我們可能會看到你的代碼,我認爲最好的辦法會是某種queue –
也看看https://stackoverflow.com/questions/10603860/very-simple-node-js-client-throws-error-enobufs-after-many-http-requests –
@Jonasw添加了一個簡短的代碼片段,你能否將我鏈接到一個隊列示例,或者給我一個想法來設置它? –