Как уже упоминалось, вам необходимо обработать его в фоновом режиме, потому что вы не можете изменить тайм-аут, установленный Heroku. Это на самом деле хорошо, потому что это позволит значительно улучшить дизайн, когда веб-приложение реагирует, и оно также может масштабироваться намного лучше.
Это означает, что вам нужно использовать что-то вроде, например, delayed job, и вы можете прочитать об этом на Heroku here.
Поток вещей будет что-то вроде этого:
- загрузить документ в жесткий лимит (тайм-аут) навязанного Heroku.
- запланировать фоновое задание для обработки документа и вернуть 200 ОК в браузер.
- браузер ждет завершения, например. фон AJAX опрос флага, чтобы увидеть, когда фоновая работа готова.
- отложенная работа забирает запланированную работу и по завершении устанавливает флаг для указания фонового задания.
- Браузер теперь может сообщить пользователю, что это сделано (до вашего приложения, чтобы узнать, что подходит).
Это идея, как это можно сделать. У вас есть несколько разных способов, которыми вы можете это сделать, и отложенная работа - это только тот, который вы можете выбрать.
Лучше не позволять загрузке файлов блокировать динамику Heroku. Попробуйте, например. [Ink Filepicker] (https://www.inkfilepicker.com/), чтобы загрузить вещи на S3. –
его не требуется больше времени для загрузки, требуется больше времени в файле процесса, например, чтение данных из excel. также требуется больше времени для создания файла excel из доступных данных. – jayesh
Вещи, которые занимают больше времени ожидания, могут быть перемещены в фоновое задание (см. Sidekiq, Resque или Delayed Job). Затем вы можете загрузить или отправить результат по электронной почте. –