Обработка более длинного HTTP-запроса (в настоящее время используется axios) - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть сервер, который преобразует большие файлы и загружает результаты в облачное хранилище.Сегодня я наконец достиг того предела, когда преобразование заняло более минуты, а загрузка заняла еще 2, что привело к очень длинному HTTP-запросу.Клиент - React, использующий axios для вызова сервера Express.

На стороне сервера я испытываю то, что примерно через 2 минуты запрос снова вызывается (без ввода данных пользователем).Затем оба запроса не выполняются на клиенте (но все же выполняются на сервере).Результатом является 2 преобразования одного и того же файла и 2 бесполезные загрузки, так как клиент получает уведомление об ошибке.

Я считаю, что то, что я вижу, это try-timeout-abort-retry-timeout-прервать последовательностьЯ попытался передать {timeout: 5 * 60 * 1000} axios, чтобы получить 5-минутный тайм-аут - безрезультатно.

Мы планируем изменить процесс на асинхронный, внеполосный, веб-сокеты и т. Д. Но до тех пор, как я могу гарантировать, что запрос не потерпит неудачу?Нужно ли обрабатывать настройки на уровне браузера?Или использовать библиотеку, отличную от axios?

1 Ответ

0 голосов
/ 22 ноября 2018

Спасибо за все комментарии - вы, ребята, это прибили.Отмена была выдана Express.Добавление req.setTimeout(5 * 60 * 1000) решило это.Спасибо всем!

Обновление: добавление тайм-аута на уровне server еще лучше:

//...express middleware + routs + etc...
const server = app.listen(PORT, function() {
  console.log(`listening on ${PORT}`);
});

//set timeout of requests to 5 minutes
server.timeout = 5 * 60 * 1000;
...