Создание большого файла xlsx с гемом axlsx_rails с использованием delayed_job

У меня есть приложение rails и несколько огромных файлов xlsx для генерации, и, хотя axlsx_rails очень хорошо работает при генерации этих файлов, когда число строк превышает 60000, существует долгое время ожидания, пока не появится окно загрузки.

Мне предложили использовать delayed_job. Как новичок, я едва понимаю, как delayed_job работает "обычным" образом, когда у вас есть метод для вызова `.delay`, но в этом случае гем выполняет всю работу, так как я могу поставить его на отложенную работу?? или, другими словами, что я должен называть `.delay`?

Вся моя реализация axlsx_rails была сделана как в следующем уроке: https://www.sitepoint.com/generate-excel-spreadsheets-rails-axlsx-gem/

1 ответ

Вероятно, они хотели использовать ActiveJob. Вы можете найти документацию для этого здесь:

http://edgeguides.rubyonrails.org/active_job_basics.html

Если вы используете Rails 5.x, вы можете использовать асинхронный адаптер очереди, поместив его в файл конфигурации application.rb:

config.active_job.queue_adapter = :async

Если вы используете Rails 4.x, вам нужно будет использовать задание для выполнения асинхронных задач, таких как sidekiq:

https://github.com/mperham/sidekiq/wiki/Active-Job

Sidekiq также потребует от вас установить Redis для хранения заданий:

https://github.com/mperham/sidekiq/wiki/Using-Redis

Вот руководство по сборке и настройке Redis:

https://redis.io/topics/quickstart

Интересующий вас раздел - "Установка Redis более правильно", хотя вы можете обойти большую часть этой ручной работы, следуя инструкциям на их странице загрузки здесь:

https://redis.io/download

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

Другие вопросы по тегам