【问题标题】:Cannot post multiple and long requst Axios无法发布多个和长请求 Axios
【发布时间】:2021-11-19 09:53:56
【问题描述】:

我需要向另一个 API 发送 post 请求,它会在 7 秒左右返回结果。

如果我尝试逐一发送帖子,效果会很好。但是一旦我循环它或发送多个请求,它就会返回错误。

错误有时是Error: socket hang upstatus code: 504

我试过了

  • 多个then().then().th

  • async/await 在 for 循环中

  • aync/await 这样一行一行

      const toonifyNewFileName = `./uploads/Toonified-toonify-${baseFileName}`
      const toonifyRes = await axios.post(toonifyUrl, formData, {headers: headers})
      var {data:{num_faces, b64_encoded_output}} = toonifyRes;
      var base64Buffer = Buffer.from(b64_encoded_output, "base64");
      writeFile(toonifyNewFileName, base64Buffer, err => console.log("DONE 1"));
    
      const comicNewFileName = `./uploads/Toonified-comic-${baseFileName}`
      const comicRes = await axios.post(comicUrl, formData, {headers: headers})
      var {data:{num_faces, b64_encoded_output: newB64}} = comicRes;
      var base64Buffer2 = Buffer.from(newB64, "base64");
      writeFile(comicNewFileName, base64Buffer2, err => console.log("DONE 2")); 
    

writeFile()没关系,我删了,没用。

我的猜测是,由于第一个请求大约需要 7 到 8 秒,这就是为什么它会导致下一个请求出错?


总结一下

我需要发布多个请求,每个请求大约需要 7 到 8 秒。 但它返回socket hang up 错误或status code: 504 GATEWAY TIME OUT

我该怎么办?

【问题讨论】:

标签: node.js axios request http-status-code-504


【解决方案1】:

原来我的问题不是关于 axios,而是关于 form-data

第一个请求顺利,但秒,我不知道为什么,但我认为form-data 有问题,可能表单数据为空

所以我想在每次发送axios.post()时初始化formdata

这是代码

const arr = [some arrya i need, like 4 elements];

await Promise.all(arr.map(async(elem) => {
    const formData = new FormData();
    formData.append('image', createReadStream(pictureUri));
    const headers = { ... };
    ...
    const response = await axios.post(url, formData, {headers: headers});
    do some work...
}))

关键是我每次都必须生成form-data,即使它总是相同的......

【讨论】:

    猜你喜欢
    • 2019-11-14
    • 2022-12-10
    • 2020-08-06
    • 2017-12-04
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多