Unicorn + Rails + Большие загрузки

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

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

Ответ 1

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

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

Ответ 2

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

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