Утечка памяти при чтении из GCS-блоков
import cloudstorage as gcs
import logging
DEFAULT_BUFFER_SIZE = 1024 * 1024
default_retry_params = gcs.RetryParams(
initial_delay=0.2,
max_delay=5.0,
backoff_factor=2,
max_retry_period=15)
gcs.set_default_retry_params(default_retry_params)
class GCSClient(object):
def __init__(self):
logging.info('Created a GCS client')
self._gcs = gcs
@staticmethod
def create_gcs_client():
return GCSClient()
def readlines(self, filename, buffer_size=DEFAULT_BUFFER_SIZE):
with self._gcs.open(filename, mode='r', read_buffer_size=buffer_size) as gcs_file:
for line in gcs_file:
yield line
Я запускаю это на управляемой виртуальной машине в GAE, когда я захожу в управляемую виртуальную машину и смотрю на использование памяти, я замечаю, что она продолжает увеличиваться. Приложение в основном читает данные с помощью этого клиента и анализирует их для вычисления некоторой статистики. Объем прочитанных данных составляет около 100 файлов по 10 МБ каждый, но я читаю по размеру фрагмента.
Это правильное использование библиотеки?