#node.js #axios #request #http-status-code-504
Вопрос:
Мне нужно отправить запрос post на другой API, который вернет результат примерно за 7 секунд.
Если я попытаюсь отправить сообщение по одному, это отлично сработает. Но как только я делаю цикл или отправляю несколько запросов, он возвращает ошибки.
Ошибки иногда Error: socket hang up
или status code: 504
Я пытался
- множественный
then().then().th
async/await
внутри для петли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
что мне следует делать?
Комментарии:
1. Вы пробовали использовать
timeout
параметр? github.com/axios/axios#axioscreateconfig
Ответ №1:
Оказывается, моя проблема была не в аксиосе, а в том 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
каждый раз, хотя это всегда будет одно и то же…