Увеличьте время ожидания сеанса в веб-приложении с помощью Angular 8 и Rest API

#angular #rest #http #post #timeout

#angular #rest #http #Публикация #время ожидания

Вопрос:

В моем веб-приложении, разработанном в angular 8 и Rest API, у меня есть вызов POST API, который занимает больше времени, чем обычно (> 1 часа или более) при загрузке и обработке определенных больших документов в серверной части.

Но я вижу в сети моего браузера, что через 4 минуты мой запрос автоматически отменяется, и в моем бэкэнде появляется ошибка ниже:

Servlet.service() для servlet javax.ws.rs.core.Приложение выдало исключение: java.lang.Исключение IllegalSta teException

В angular я попробовал приведенный ниже код, но он не работает. Я использую вызов post api:

     return this.httpClient
      .post(endpoint, formData, { params: payload }).pipe(
        timeout(36000000) // timeout I want to extend for 10 hours to read large files from backend.
      ).subscribe((response: boolean) => {
        this.isLoading = false;
        if (response != null)
          this.fassungImportDataSource.next(true);
      });
  }```

Can anyone please help regarding this?
  

Комментарии:

1. Как мне увеличить время ожидания запроса http post?

2. Время ожидания, которое вы timeout передаете, — это оператор RxJS. Он будет только прослушивать наблюдаемое во внешнем интерфейсе и выдавать ошибку, которую obs не выдал за указанное время. Это не имеет ничего общего с таймаутом HTTP. IMO элегантный способ состоял бы в том, чтобы сделать загрузку многокомпонентной и загружать порциями вместо одной загрузки.

3. Проблем с загрузкой файла нет, после загрузки файла в серверную часть серверная часть считывает / обрабатывает файл, что занимает много времени, возникает тайм-аут запроса.

4. В этом случае вам необходимо настроить серверную часть, чтобы вернуть вызов после завершения загрузки. Через некоторое время вы можете проверить, завершена ли обработка. Или лучше подходит для этого сценария было бы использовать WebSockets. Это позволит вам загрузить файл и получить обработанный ответ обратно.

5. Хорошо, и есть ли какой-либо способ увеличить наблюдаемый тайм-аут эмиссии?