У меня есть скрипт ruby, который обрабатывает логи S3 примерно так:
AWS::S3::Bucket.find(data_bucket).logs.each do |s3log|
s3log.lines.each do |line|
# accumulate stuff
end
end
Однако в гем aws / s3 аксессор: lines запоминает данные. Так что память растет, когда я обрабатываю каждый файл.
Кроме того, как взламывать драгоценный камень, закрывать файлы, читаемые при каждом запуске, и / или часто запускать скрипт, как я могу изящно избежать рубинового процесса, который может вырасти до нескольких ГБ? Мне не хватает трюка с управлением памятью?