Я пытаюсь разбить загрузку файла в фоновом режиме. Мои активы хранятся на S3.Разрыв файла Загрузка в фоновый процесс с помощью Sidekiq
Мой оригинальный (блокировка) код выглядит следующим образом
# From DownloadsController#download
data = open(path)
send_data(data.read, type: @download.mime_type, filename: @download.file_title)
Так я настроил Redis и Sidekiq, и создал FielDownloadWorker
:
class FileDownloadWorker
include Sidekiq::Worker
def perform(path, mime_type, file_title)
data = open(path)
# What happens next?
end
end
Который вызывается с помощью:
FileDownloadWorker.perform_async (путь, @ download.mime_type, @ download.file_title)
Как начать загрузку с рабочего?
Спасибо, что ответили. Я пытаюсь сделать нестандартный подход? Должен ли я беспокоиться о блокировке при загрузке? – Undistraction
Довольно стандартно отложить блокировку операций ввода-вывода для рабочего. Но не стандарт, чтобы рабочий отвечал на пользователя с загрузкой. Рабочие не могут выдавать ответы. Только контроллеры. Некоторые способы решения этой проблемы связаны с вышеупомянутыми решениями. – DiegoSalazar