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

pull/1/head
rebuilt 3 years ago
parent 79adff5faa
commit 7a159f7ddf

@ -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
end row_count += 1
next unless row_count == 1000
SurveyItemResponse.import survey_item_responses.compact.flatten, batch_size: 1000 SurveyItemResponse.import survey_item_responses.compact.flatten, batch_size: 1000
survey_item_responses = []
row_count = 0
end
end end
private private

Loading…
Cancel
Save