不能 post 多个长请求 Axios

Cannot post multiple and long requst Axios

我需要向另一个 API 发送 post 请求,这将 return 结果大约需要 7 秒。

如果我尝试一个接一个地发送 post,效果很好。但是一旦我循环它或发送多个请求,它就会 returns 错误。

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

我试过了

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

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


总结

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

我该怎么办?

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

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

所以我想出了每次发送时都要初始化 formdata axios.post()

这是代码

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,即使它总是相同的...

很明显socket挂了!不要理会http,它有点复杂。使用 node unirest 并关闭数据流。 有了这个,你就可以远程循环批量发送文件了。

var unirest = require('unirest');
var req = unirest('POST', 'localhost:3200/store/artifact/metamodel')
  .attach('file', '/home/arsene/DB.ecore')
  .field('description', 'We are trying to save the metamodel')
  .field('project', '6256d72a81c4b80ccfc1768b')
  .end(function (res) { 
    if (res.error) throw new Error(res.error); 
    console.log(res.raw_body);
  });

希望对您有所帮助!