Process 1000 rows at a time to limit memory usage in production

mciea-main
rebuilt 3 years ago
parent 640de1c8df
commit 47c1856281

@ -26,6 +26,7 @@ class SurveyResponsesDataLoader
all_survey_items = survey_items(headers:) all_survey_items = survey_items(headers:)
survey_item_responses = [] survey_item_responses = []
row_count = 0
until file.eof? until file.eof?
line = file.gets line = file.gets
next unless line.present? next unless line.present?
@ -35,8 +36,13 @@ class SurveyResponsesDataLoader
rules:) rules:)
end end
row_count += 1
next unless row_count == 1000
SurveyItemResponse.import survey_item_responses.compact.flatten, batch_size: 1000
survey_item_responses = []
row_count = 0
end end
SurveyItemResponse.import survey_item_responses.compact.flatten, batch_size: 1000
end end
private private

Loading…
Cancel
Save