API-Ratenbeschränkungen werden auf /api-Endpunkten festgelegt, um große Spitzen in
der Anzahl der API-Aufrufe zu verhindern, die die Leistung von Server- und Workload Protection beeinträchtigen könnten.
API-Aufrufraten werden als die Anzahl der API-Aufrufe gemessen, die Server- und Workload Protection innerhalb der letzten sechzig Sekunden empfängt. Wenn ein Ratenlimit überschritten
wird, verarbeitet der Manager keine Anfragen, bis die Aufrufrate unter alle Ratenlimits
fällt.
Wenn ein Anruf getätigt wird und ein API-Ratenlimit überschritten wird, lautet der
Antwortcode
429 mit der Nachricht Too many API requests.Behandeln Sie Ratenbegrenzungsfehler in Ihrem Code
Wenn eine SDK-Methode oder -Funktion ausgeführt wird, wenn ein API-Ratenlimit in Ihrer
Umgebung überschritten wird, wirft die Methode oder Funktion ein
ApiException mit der Nachricht Too many API calls. Erwägen Sie, in Ihrem Code eine Logik einzubauen, die Ausnahmen auf diese Nachricht
testet und, falls abgefangen, das Skript nach einer bestimmten Wartezeit erneut ausführt.Wenn Sie die Grenzrate ständig überschreiten, kontaktieren Sie den Support.
TippAnrufe, die getätigt werden, während ein Ratenlimit überschritten wird, werden in
den API-Ratenmessungen nicht gezählt.
|
Sie können die
APIUsageAPI-Klasse eines SDK verwenden, um Anrufraten zu bestimmen. Siehe API-Nutzung im API-Referenzhandbuch. Zum Beispiel können Sie nach allen API-Aufrufen suchen,
die während eines bestimmten Zeitraums auftreten. Analysieren Sie die zurückgegebenen
Daten, um die Gesamtanzahl der Aufrufe zu zählen. Sie können auch die Anzahl der Code-429-Antworten
finden. Siehe Datumsbereich-Suchen.Das folgende Beispiel fängt Ausnahmen oder Fehler ab, die auftreten, wenn ein API-Ratenlimit
überschritten wird. Bei Erfassung berechnet ein exponentieller Backoff-Algorithmus
die Verzögerung, bis der Aufruf erneut versucht wird. Die Anzahl der Wiederholungen
ist auf eine maximale Anzahl begrenzt.
while True:
# Create a computer object and set the policy ID
computer = api.Computer()
computer.policy_id = policy_id
try:
# Modify the computer on Server- und Workload Protection 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)
