HTTP потоковая передача на Heroku (загрузка большого количества данных) - PullRequest
3 голосов
/ 28 марта 2012

У меня есть одно приложение, размещенное на Heroku, и это приложение сохраняет большое количество информации в базу данных (это занимает около 70 секунд).

Heroku после 30-секундного периода каждого запроса отображает страницу ошибки H12 о тайм-аут , как я могу отображать некоторые информационные сообщения во время загрузки вместо отображения H12 ошибка?

Я искал какой-то пример этого, но я не добился большого успеха ... Я просто нашел несколько заметок, которые мне приходится каждый раз отправлять (например, 15 секунд) какую-то управляющую строку с сервера, но я уже не нашел конкретного примера, как это сделать ...

Какие-нибудь советы, как это сделать?

Спасибо заранее.

1 Ответ

0 голосов
/ 18 апреля 2012

Не рекомендуется, чтобы ваши пользователи ждали запрос в течение 70 секунд на любой платформе. Heroku просто применяет эту лучшую практику, применяя 30-секундный тайм-аут. Поэтому реальный вопрос заключается в том, как лучше спроектировать приложение.

В Heroku есть статья о внедрении фоновых рабочих, которая предназначена для решения этой самой проблемы: https://devcenter.heroku.com/articles/queueing

Основной подход заключается в том, чтобы веб-запрос планировал фоновое задание (используя «Задержка задания», «Классическая очередь», «Возврат» и т. Д.) И немедленно отвечал пользователю некоторым индикатором прогресса. Затем динам, работающий в фоновом режиме, выполняет тяжелую работу по сохранению информации в БД. Когда это сделано, он устанавливает какой-либо флаг в базе данных или другом механизме хранения, который уведомляет веб-клиента о том, что задание завершено.

Для запуска фонового работника требуется еще один dyno. Если вы хотите избежать этих расходов, вы можете заглянуть в Girl Friday , о которой многие сообщают об успехе.

Надеюсь, это поможет.

...