AJAX 요청이 1분 후에 시간 초과됨

며칠 전, ajax를 통해 컨트롤러 메서드를 호출하고 그 결과를 반환하는 Discourse 플러그인을 만들었습니다. 이 특정 요청은 몇 분 동안 실행될 수 있으며, 이전에는 잘 작동했습니다.

하지만 오랜 시간이 지난 후 현재 Discourse 버전에서 플러그인을 테스트해 보니, 요청이 1분 후에 중단되는 문제가 발생하고 있습니다.

코드는 다음과 같습니다:

ajax("/my-plugin/import", {
        type: "POST",
        data: {
          categoryId: this.categoryId,
          otherData: ...
        }
      }).then((result) => { ... });

1분 후에 보이는 에러 메시지는 다음과 같습니다:

Discourse Ember CLI Proxy Error

FetchError: request to http://127.0.0.1:3000/my-plugin/import failed, reason: socket hang up
at ClientRequest. (file:///src/app/assets/javascripts/node_modules/node-fetch/src/index.js:108:11)
at ClientRequest.emit (node:events:526:35)
at Socket.socketOnEnd (node:_http_client:525:9)
at Socket.emit (node:events:526:35)
at endReadableNT (node:internal/streams/readable:1359:12)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)

제가 이해하려는 것은 왜 이 동작이 지난 1년 동안 변경되었는지, 그리고 타임아웃 설정을 변경할 수 있는 옵션이 있는지입니다.

최근에 변경된 사항이 있는 것 같지 않습니다. Discourse의 백엔드는 개발 환경에서는 60초, 운영 환경에서는 30초 후 요청이 타임아웃되도록 설정되어 있습니다.

개발 환경에서는 UNICORN_TIMEOUT 환경 변수를 통해 설정할 수 있는 것으로 보입니다. 하지만 운영 환경은 30초로 하드코딩되어 있습니다.

가져오기를 처리할 작업을 예약하고 싶을 수도 있습니다.

결국 예약된 잡으로 가져오기를 처리하도록 다시 작성했는데, 결과적으로 훨씬 나았어요.