【发布时间】:2018-01-24 22:00:36
【问题描述】:
我正在构建一个使用 Heroku 部署的 rails 应用程序,我需要能够导入和处理大型 csv 文件(超过 5000 行)。
使用内置 ruby csv 解析器在控制器中执行此操作需要 30 多秒,并导致 Heroku dyno 超时
我正在考虑将 csv 放入数据库,然后使用 delay_job 对其进行处理,但这种方法仅限于 4200 多行。
我正在为包含文件的列使用 mysql 和 longtext,因此 db 应该能够处理它
对这个用例有什么想法吗?
【问题讨论】:
-
您可以将 CSV 拆分为多个文件,或者简单地使用 Worker 来实际解析 CSV 并存储数据并直接回复用户“您的 CSV 正在被解析,几分钟后回来"。
-
试过了,将文件发送给工作人员会导致活动记录错误,因为它对于延迟的作业表来说太大了
-
我的过程基本上是让控制器保存文件并在后台进程/工作人员中执行任何可能涉及大量文件的操作。如果您逐行或批量解析文件,则不会导致活动记录错误
标签: mysql ruby-on-rails ruby heroku delayed-job