RetryParams クラス

RetryParams は、src/cloudstorage に含まれている Cloud Storage 用 App Engine クライアント ライブラリにより提供されます。このクラスを使用すると、タイムアウトおよび再試行を処理するためのデフォルト設定を変更できます。

はじめに

Google Cloud Storage サーバーとの接続が試みられている間、Cloud Storage 用 App Engine クライアント ライブラリは、タイムアウトと再試行の処理にデフォルトの設定を使用します。このクラスを使用すると、アプリケーション全体に対して、またはライブラリ関数(copy2deletelistbucketopenstat)の特定の呼び出しに対してそれらの設定を変更できます。他のすべての設定は、明示的に上書きされない限り保持されるため、必要な特定の設定のみを変更する必要があります。各 RetryParams インスタンスは、スレッドごと、リクエストごとに一意です。

アプリケーション全体でデフォルト設定を変更するには、次のように変更する設定をすべて指定して RetryParams オブジェクトを作成し、このオブジェクトを cloudstorage.set_default_retry_params() 関数に渡します。

my_default_retry_params = cloudstorage.RetryParams(initial_delay=0.2,
                                      max_delay=5.0,
                                      backoff_factor=2,
                                      max_retry_period=15)
cloudstorage.set_default_retry_params(my_default_retry_params)

特定の関数呼び出しのデフォルト設定のみを変更するには、次のように RetryParams オブジェクトを作成し、retry_params パラメータで関数に直接渡します。

write_retry_params = cloudstorage.RetryParams(backoff_factor=1.1)
gcs_file = cloudstorage.open(filename,
                    'w',
                    content_type='text/plain',
                    options={'x-goog-meta-foo': 'foo',
                             'x-goog-meta-bar': 'bar'},
                    retry_params=write_retry_params)

この方法では、アプリや他の関数呼び出しで使用されるデフォルト設定は、影響を受けません。

インスタンス プロパティ

RetryParams インスタンスには次のプロパティがあります。

initial_delay
再試行までの遅延時間(秒)。デフォルトは 0.1 です。この遅延は、Google Cloud Storage サーバーの負荷の分散に役立ちます。
backoff_factor
指数バックオフ乗数。最適な処理速度を決定するために使われます。デフォルトは 2.0 です。この値の設定に関するの説明と推奨事項については、バックオフに関する Google Cloud Storage ドキュメントをご覧ください。
max_delay
次の再試行まで待機する最大秒数。デフォルトは 10.0 です。
min_retries
再試行の最小回数。デフォルトは 3 です。
max_retries
再試行の最大回数。まったく再試行しない場合は、この値を 0 に設定します。デフォルトは 6 です。
max_retry_period
特定のリクエストで再試行全体に使用できる最大秒数。デフォルトは 30.0 です。この期間が経過し、かつ、min_retries 回の試行が済んでいる場合、再試行は停止します。
urlfetch_timeout
UrlFetch が Google Cloud Storage サーバーとの通信を待機する秒数。これを経過するとタイムアウト エラーが返されます。デフォルトでは、None に設定されます。その場合は、デフォルトの UrlFetch 期限(5 秒)が使用されます。最大 60 秒までの範囲で、この値を任意の値に設定できます。