このページのトピック
APIレートの上限
/api
エンドポイントにはAPIレート制限が設定されており、Workload Securityのパフォーマンスを低下させる可能性のあるAPIコール数の急増を防ぎます。
APIコール率は、過去60秒以内にWorkload Securityが受信したAPI呼び出しの数として測定されます。レート制限を超えた場合、コールレートがすべてのレート制限を下回るまでマネージャは要求を処理しません。
呼び出しが行われ、APIレートの上限を超えた場合、応答コードは 429
で、メッセージ Too many API requests
が表示されます。
コード内のハンドル率制限エラー
APIメソッドまたはAPI関数の実行時に、環境内でAPIレートの上限を超えた場合、そのメソッドまたは関数は、メッセージ Too many API calls
とともに ApiException
をスローします。このメッセージの除外をテストし、catchされた場合は一定の時間待機してから再度スクリプトを実行するロジックをコードに含めてください。
レート制限を継続的に超過する場合は、トレンドマイクロ サポートにお問い合わせください。
レート制限を超えている間に行われた呼び出しは、APIレート測定にカウントされないことに注意してください。
SDKのAPIUsageAPI
クラスを使用して、コールレートを決定できます (「APIリファレンス」のAPIの使用状況をレファレンス/参照情報)。たとえば、特定の期間に発生したすべてのAPIコールを検索できます。返されたデータを解析して、呼び出しの総数をカウントします。また、Code 429の応答数も確認できます (日付範囲の検索 を参照)。
次の例では、APIレート制限を超えたときに発生する例外またはエラーをキャッチします。検出されると、指数バックオフアルゴリズムによって、コールが再試行されるまでの遅延が計算されます。再試行回数の上限は次のとおりです。
while True:
# Create a computer object and set the policy ID
computer = api.Computer()
computer.policy_id = policy_id
try:
# Modify the computer on Workload Security and store the ID of the returned computer
computer = computers_api.modify_computer(computer_ids[change_count], computer, api_version, overrides=False)
modified_computer_ids.append(computer.id)
retries = 0
# Increment the count and return if all computers are modified
change_count += 1
if change_count == len(computer_ids):
return modified_computer_ids
except api_exception as e:
if e.status == 429 and retries < MAX_RETRIES:
# The error is due to exceeding an API rate limit
retries += 1
# Calculate sleep time
exp_backoff = (2 ** (retries +3)) / 1000
print("API rate limit is exceeded. Retry in {} s.".format(exp_backoff))
time.sleep(exp_backoff)
else:
# Return all other exception causes or when max retries is exceeded
return "Exception: " + str(e)