【发布时间】:2015-02-17 13:42:04
【问题描述】:
我想知道 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 工作人员,但我收到错误 SystemStackError (stack level too deep):
我尝试过的另一种方法是将每一行转换为哈希,然后将其发送到 sidekiq worker,它也可以正常工作。很高兴知道这里最好的方法是什么,即使有 10000 行。
我最后的办法是保存文件并将路径的链接发送给sidekiq worker,但如果没有这种方法可以做到这一点,那就太好了。
【问题讨论】:
-
保存文件并将路径发送给 Sidekiq 怎么样?
-
是的,我也想过,但那将是我最后的手段。
-
不清楚你在问什么,因为你确实说你目前的方法有效。
标签: ruby csv ruby-on-rails-4 sidekiq