ruby - 文件对象是否应该发送给sidekiq worker

标签 ruby csv ruby-on-rails-4 sidekiq

我想知道是否可以将 fileobject 发送给 sidekiq worker,我已经尝试过了并且工作正常,我很关心性能,例如,如果我有一个包含 1000 行的 CSV,那么我应该发送文件对象,例如

SidekiqWorker.perform_async(params[:bulk_update_csv_file].read)

这种方法可行,但由于文件包含很多行,如果该文件对象应作为参数传递给 sidekiq worker,我担心性能。

我已经尝试了一些其他的东西,比如使用

CSV.parse(params[:bulk_update_csv_file].read, headers: true) 然后将对象切成大约 500 行,然后将包含 500 行的 CSV 解析器对象发送给 sidekiq worker 但是我收到错误 SystemStackError(堆栈级别太深):

我尝试过的另一种方法是将每一行转换为哈希,然后将其发送给 sidekiq worker,这也能正常工作。很高兴知道这里最好的方法是什么,即使有 10000 行也是如此。

我最后的办法是保存文件并将路径的链接发送给 sidekiq worker,但如果没有这种方法也能做到这一点,那就太好了。

最佳答案

来自Sidekiq Wiki :

Don't save state to Sidekiq, save simple identifiers.

文件的内容是状态,文件的路径是一个简单的标识符。

结论:发送文件路径,让Sidekiq worker读取文件。

关于ruby - 文件对象是否应该发送给sidekiq worker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28562873/

相关文章:

ruby - 在整个目录上执行 Ruby 脚本

python - 使用 Pandas [with key column] 将 CSV 与不同的列组合

python - 将非嵌套 json 转换为 csv 文件?

ruby-on-rails - ActionController::RoutingError:没有路由匹配 [GET] "/"

ruby-on-rails - 通过 Rails 使用 FFMPEG 添加水印

ruby-on-rails - Ruby on Rails 未定义方法 `[]' 为 true :TrueClass Capybara & poltergeist

php - PHP MD5 key 的等效 ruby​​ 代码

ruby-on-rails - ActiveRecord:查找列为零或空数组的位置

variables - 直接从csv读取var

ruby-on-rails - 创建前将名称大写。设计