簡體   English   中英

請求失敗,狀態碼為 429 Axios

[英]Request failed with status code 429 Axios

我正在嘗試將大量數據從外部 API 端點解析到我的數據庫,我不斷收到錯誤 429。

我已經嘗試過超時和睡眠庫,但由於某種原因它不起作用。

這是代碼:

async function(req, res) {
    console.log("usa sam");
    try {
        let count = await Subjekti.estimatedDocumentCount();
        let response = await axios.get(`x.com/?offset=${count}&limit=5000`, {
            timeout: 5800,
            headers: {
                "Key": "x"
            }
        });
        const subjects = response.data;
        for (let subject of subjects) {
            let companyDetails = await axios.get(`https://x.com=${subject.mbs}&expand_relations=true`, {
                headers: {
                    "Key": "x"
                }
            });
            await Subjekti({
                mbs: subject.mbs,
                sud_id_nadlezan: subject.sud_id_nadlezan,
                sud_id_sluzba: subject.sud_id_sluzba,
                oib: subject.oib,
                ino_podruznica: subject.ino_podruznica,
                stecajna_masa: subject.stecajna_masa,
                datum_osnivanja: subject.datum_osnivanja,
                postupak: subject.postupak,
                likvidacijska_masa: subject.likvidacijska_masa,
                skracene_tvrtke: companyDetails.data.skracene_tvrtke && companyDetails.data.skracene_tvrtke.length > 0 ? companyDetails.data.skracene_tvrtke[0].ime : null,
                ulica: companyDetails.data.sjedista && companyDetails.data.sjedista.length > 0 ? companyDetails.data.sjedista[0].ulica : null,
                kucni_broj: companyDetails.data.sjedista && companyDetails.data.sjedista.length > 0 ? companyDetails.data.sjedista[0].kucni_broj : null,
                naziv_naselja: companyDetails.data.sjedista && companyDetails.data.sjedista.length > 0 ? companyDetails.data.sjedista[0].naziv_naselja : null,
                naziv_zupanije: companyDetails.data.sjedista && companyDetails.data.sjedista.length > 0 ? companyDetails.data.sjedista[0].naziv_zupanije : null,
            }).save();
            console.log("spremija i cekam");

        }
    } catch (err) {
        //Baci error 500...
        return apiResponse.ErrorResponse(res, err);
    }
}

期待你的答復。

您發送的請求太多,並且您會受到速率限制。

您應該更改邏輯以允許通過單個請求發送和檢索更多數據,或者將大部分請求延遲到稍后階段。

要使用 axios 攔截器延遲請求,請看這里:

https://stackoverflow.com/a/52258937/7629020

我找到了解決方案:

等待新的承諾(解決=> setTimeout(解決,5000));

希望它可以幫助某人並節省您的時間。

在這種情況下嘗試使用 debounce 方法來避免發送過多的請求。

在此處查看示例: https://www.freecodecamp.org/news/javascript-debounce-example/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM