我正在构建一个允许用户从 CSV 文件导入联系人的 rails 3.2 应用程序。如果 CSV 文件中的任何联系人行包含验证错误,则不会导入任何联系人,并且错误会在 CSV 文件中显示给用户。例如,如果联系人 CSV 有 20 行,其中 4 行和 15 行有错误,则不会导入任何联系人,并且 CSV 的第 4 行和第 15 行都会向用户显示错误。
我通过一次读取每一行并使用“ Contact.new ”在数组中“构建”记录来完成此功能。如果不存在错误,我会通过迭代数组来保存所有联系人,否则会显示存在错误。
如果行数增加到 40,那么导入联系人需要大约 20 分钟,这是不好的。有没有办法提高它的性能?
更新: 我用 Unicorn 将这个应用程序部署在 Heroku 上。如果我导入包含 40 个联系人的 CSV,应用程序会在 30 秒后崩溃,但所有联系人都会被导入。以下是导致应用程序崩溃的日志:
2012-12-26T15:40:28+00:00 app[web.1]: E, [2012-12-26T15:40:27.233802 #2] ERROR -- : worker=0 PID:54 timeout (31s > 30s), killing
2012-12-26T15:40:29+00:00 app[web.1]: E, [2012-12-26T15:40:29.724725 #2] ERROR -- : reaped #<Process::Status: pid 54 SIGKILL (signal 9)> worker=0
2012-12-26T15:40:32+00:00 app[web.1]: Disconnected from ActiveRecord
2012-12-26T15:40:33+00:00 app[web.1]: Disconnected from Redis
对此有任何想法吗?