{"meta":{"title":"Umgang mit API-Ratenbegrenzungen","intro":"Copilot-Chat kann bei der Behandlung von API-Rate-Grenzwerten helfen, indem Code vorgeschlagen wird, der sie erkennt und die Wiederholungslogik implementiert.","product":"GitHub Copilot","breadcrumbs":[{"href":"/de/copilot","title":"GitHub Copilot"},{"href":"/de/copilot/tutorials","title":"Anleitungen"},{"href":"/de/copilot/tutorials/copilot-cookbook","title":"GitHub Copilot Kochbuch"},{"href":"/de/copilot/tutorials/copilot-cookbook/debug-errors","title":"Debuggen von Fehlern"},{"href":"/de/copilot/tutorials/copilot-cookbook/debug-errors/handle-api-rate-limits","title":"Mit API-Ratenbegrenzungen umgehen"}],"documentType":"article"},"body":"# Umgang mit API-Ratenbegrenzungen\n\nCopilot-Chat kann bei der Behandlung von API-Rate-Grenzwerten helfen, indem Code vorgeschlagen wird, der sie erkennt und die Wiederholungslogik implementiert.\n\nBeim Senden von Anforderungen an APIs treten häufig Ratenbegrenzungen auf, die die Anzahl der Aufrufe beschränken, die Sie innerhalb eines bestimmten Zeitraums durchführen können.\nGitHub Copilot Gespräch kann Ihnen helfen, diese Beschränkungen zu handhaben, indem es Code vorschlägt, um Rate-Limit-Antworten zu erkennen und Anfragen nach einer Wartezeit automatisch erneut zu senden.\n\n## Beispielszenario\n\nMit dem folgenden Python-Code werden Wetterdaten aus einer externen API abgerufen. Wenn für die API Ratenbegrenzungen festgelegt sind, können bei Anforderungen Fehler auftreten, wenn die Grenzwerte überschritten werden. Ihre App sollte die Möglichkeit haben, mit diesen Antworten ordnungsgemäß umzugehen, indem die Wiederholungslogik implementiert wird.\n\n```python id=rate-limit-example\nfrom flask import Flask, request\nimport requests\n\napp = Flask(__name__)\n\nWEATHER_API_URL = \"https://api.example.com/weather\"\n\n@app.route('/get_weather', methods=['GET'])\ndef get_weather():\n    city = request.args.get('city')\n    # Simulate an API request to the external weather service\n    response = requests.get(WEATHER_API_URL, params={\"city\": city})\n    weather_data = response.json()\n\n    return weather_data\n```\n\n## Beispielaufforderung\n\n```copilot copy prompt ref=rate-limit-example\nHow can I handle API rate limits within get_weather().\n```\n\n## Beispielantwort\n\n> \\[!NOTE] Die folgende Antwort ist ein Beispiel. Da die Copilot-Chat-Antworten nicht deterministisch sind, erhältst du möglicherweise eine andere Antwort als die hier beschriebene.\n\nCopilot kann Code vorschlagen, der einen Wiederholungsmechanismus mit exponentiellem Backoff implementiert, um die Häufigkeit der Wiederholungsversuche zu begrenzen.\n\nBeispiel:\n\n```python\nimport requests\nfrom flask import Flask, request\nfrom requests.adapters import HTTPAdapter\nfrom requests.packages.urllib3.util.retry import Retry\n\napp = Flask(__name__)\n\nWEATHER_API_URL = \"https://api.example.com/weather\"\n\ndef requests_retry_session(\n    retries=3,\n    backoff_factor=0.3,\n    status_forcelist=(500, 502, 504),\n    session=None,\n):\n    session = session or requests.Session()\n    retry = Retry(\n        total=retries,\n        read=retries,\n        connect=retries,\n        backoff_factor=backoff_factor,\n        status_forcelist=status_forcelist,\n    )\n    adapter = HTTPAdapter(max_retries=retry)\n    session.mount(\"http://\", adapter)\n    session.mount(\"https://\", adapter)\n    return session\n\n@app.route('/get_weather', methods=['GET'])\ndef get_weather():\n    city = request.args.get('city')\n    try:\n        response = requests_retry_session().get(WEATHER_API_URL, params={\"city\": city})\n        response.raise_for_status()\n        weather_data = response.json()\n    except requests.exceptions.RequestException as e:\n        return {\"error\": str(e)}, 500\n\n    return weather_data\n```\n\nIn diesem Beispiel Copilotsind die Vorschläge zum Einrichten einer Wiederholungssitzung enthalten, mit der der Code Anforderungen automatisch wiederholen kann, wenn sie aufgrund bestimmter Statuscodes fehlschlagen (500, 502, 504). Der `backoff_factor` verlängert schrittweise die Wartezeit zwischen den Versuchen. Dadurch wird verhindert, dass das Ratenlimit der API weiterhin überschritten wird.\n\n## Weiterführende Lektüre\n\n* [Prompt-Engineering für GitHub Copilot Chat](/de/copilot/using-github-copilot/prompt-engineering-for-github-copilot)\n* [Bewährte Methoden für die Verwendung von GitHub Copilot](/de/copilot/using-github-copilot/best-practices-for-using-github-copilot)"}