Единорог + Рельсы + Большие загрузки - PullRequest
11 голосов
/ 07 марта 2012

Я пытаюсь разрешить большие загрузки при запуске Unicorn на Heroku с Rails, но я понял, что любые большие загрузки могут занять больше времени, чем период ожидания для работника Unicorn. Это будет означать (я видел, что это произошло), что основной процесс Unicorn убьет работника, загружающего большой файл, и запрос прекратит работу (с ошибкой 503).

Не удаляя или не увеличивая время ожидания для моего сервера, есть ли способ позволить работнику, выполняющему загрузку, зависать при завершении загрузки? Или я полностью недопонимаю и, скорее всего, что-то еще вызывает мои загрузки по таймауту?

Ответы [ 2 ]

8 голосов
/ 15 марта 2012

Если вы используете nginx в качестве обратного прокси-сервера перед вашими единорогами, вы можете использовать Модуль загрузки . После настройки nginx обрабатывает загрузку и сохраняет ее в каталоге / tmp, затем ваш единорог получает параметры запроса, указывающие, где находится загруженный ресурс и его тип содержимого. Нет больше работника, связанного с получением загрузки.

Если вы на самом деле не хотите загружать файлы на тот же сервер, на котором находится ваш веб-сервис, а предпочитаете хранить их на S3, вы должны следовать предложению @Neil Middleton и настроить все так, чтобы загрузка шла прямо туда.

7 голосов
/ 07 марта 2012

Если вы загружаете на S3, вы можете «просто» сделать так, чтобы пользователь загружал файлы напрямую на S3, а не через dynos, и получать эхо-запрос после завершения загрузки.

Для получения значительно большей информации, чем эта, посмотрите что-то вроде CarrierWaveDirect

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...