Ansichten:
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.
Tipp
Tipp
Anrufe, 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)