Загрузка фонового файла rails 5 (без постобработки), в идеале с помощью скрепки и delayed_job

Недавно переместил приложение на heroku и обновил до rails 5. Загрузка файлов блокирует dyno слишком долго.

Я хотел бы поместить загрузку файлов в фоновый процесс. Все, что я читал, оказывается просто постобработкой изображения в фоновом режиме. Можно ли поставить фактическую загрузку в фоновый процесс. Если да, то как?

Я прочитал и преуспел в прямой загрузке на s3, но это не то, что мне нужно. Мне нравятся проверки, предлагаемые скрепкой, и тысячи файлов уже хранятся с помощью скрепки, поэтому я не хочу менять систему хранения (идентификатор записи).

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


person Daniela    schedule 06.01.2018    source источник


Ответы (1)


Чтобы сервер (ваш Heroku Dyno) что-то сделал с загрузкой в ​​​​фоновом режиме, ему в первую очередь нужно иметь файл. Сначала должна произойти загрузка из браузера пользователя на сервер, поэтому вы не сможете сделать это неблокирующим.

При этом прямая загрузка на S3 позволяет избежать ожидания файла вашим сервером. Затем ваша фоновая работа может состоять из загрузки файла с S3, его проверки и уведомления пользователя о результате.

В конечном счете, этот файл должен быть отправлен из браузера куда-то, куда сервер может получить к нему доступ в свое время.

person tombeynon    schedule 06.01.2018
comment
Если я использую прямую загрузку S3, то проверяю и перемещаю файл в фоновом режиме: вы знаете, как это сделать, или у вас есть полезная ссылка? (кроме прямой загрузки, с этим уже разобрались). Спасибо! - person Daniela; 08.01.2018
comment
Привет, Том! Думаю, я нашел идеальное решение: Shrine — жемчужина, которая охватывает именно те проблемы и решения, которые мне нужны! - person Daniela; 18.01.2018