0
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 の管理対象 VM で実行しています。管理対象 VM にログインしてメモリ使用量を確認すると、増加し続けていることがわかります。アプリは基本的に、このクライアントを使用してデータを読み取り、それを解析していくつかの統計を計算します。読み取ったデータ量は、それぞれ10Mbのファイル約100個ですが、チャンクサイズで読み取りました。

これはライブラリの正しい使用法ですか?

4

0 に答える 0