Бих искал да знам дали fileobject може да бъде изпратен на sidekiq worker, изпробвах това и работи добре, загрижен съм за производителността, например ако имам 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, което също работи добре. Би било чудесно да знаем какъв би бил най-добрият подход тук, дори ако има 10 000 реда.
Последната ми възможност би била да запазя файла и да изпратя връзката на пътя към sidekiq worker, но би било чудесно, ако това можеше да стане без този метод.