Я хотел бы знать, можно ли отправить файловый объект рабочему sidekiq, я пробовал это, и он отлично работает, меня беспокоит производительность, например, если у меня есть CSV с 1000 строками, тогда я должен отправить файловый объект для например
SidekiqWorker.perform_async(params[:bulk_update_csv_file].read)
Этот подход работает, но поскольку файл состоит из множества строк, меня беспокоит производительность, если этот файловый объект должен быть передан в качестве аргумента для sidekiq worker.
Я пробовал несколько других вещей, таких как использование
CSV.parse(params[:bulk_update_csv_file].read, headers: true)
, а затем нарезаю объект примерно на 500 строк, а затем отправляю этот объект синтаксического анализатора CSV с 500 строками рабочему sidekiq, но я получаю сообщение об ошибке SystemStackError (stack level too deep):
Другой подход, который я пробовал, состоит в том, чтобы преобразовать каждую строку в хэш, а затем отправить его на sidekiq worker, который также отлично работает. Было бы здорово узнать, какой подход здесь будет лучшим, даже если строк 10000.
Моим последним средством было бы сохранить файл и отправить ссылку на путь к sidekiq worker, но было бы здорово, если бы это можно было сделать без этого метода.