{"meta":{"title":"Gerenciamento de limites de requisições de API","intro":"O Bate-papo do Copilot pode ajudar a lidar com os limites de taxa de solicitação da API sugerindo código que detecta esses limites e implementa a lógica de repetição.","product":"GitHub Copilot","breadcrumbs":[{"href":"/pt/copilot","title":"GitHub Copilot"},{"href":"/pt/copilot/tutorials","title":"Tutoriais"},{"href":"/pt/copilot/tutorials/copilot-chat-cookbook","title":"Livro de Receitas do GitHub Copilot Chat"},{"href":"/pt/copilot/tutorials/copilot-chat-cookbook/debug-errors","title":"Depurar erros"},{"href":"/pt/copilot/tutorials/copilot-chat-cookbook/debug-errors/handle-api-rate-limits","title":"Gerenciar limites de taxação de API"}],"documentType":"article"},"body":"# Gerenciamento de limites de requisições de API\n\nO Bate-papo do Copilot pode ajudar a lidar com os limites de taxa de solicitação da API sugerindo código que detecta esses limites e implementa a lógica de repetição.\n\nAo fazer solicitações para APIs, é comum encontrar limites de taxa que restringem o número de chamadas que você pode fazer em um determinado período. O Copilot Chat do GitHub pode ajudar você a tratar esses limites sugerindo código para detectar respostas de limite de taxa e repetir solicitações automaticamente após um atraso.\n\n## Cenário de exemplo\n\nO código Python a seguir busca dados meteorológicos de uma API externa. Se a API tiver limites de taxa, as solicitações poderão falhar quando os limites forem excedidos, e seu aplicativo poderá precisar de uma maneira de lidar com essas respostas normalmente implementando a lógica de repetição.\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## Solicitação de exemplo\n\n```copilot copy prompt ref=rate-limit-example\nHow can I handle API rate limits within get_weather().\n```\n\n## Exemplo de resposta\n\n> \\[!NOTE] A resposta a seguir é um exemplo. Respostas do Bate-papo do Copilot são não determinísticas, portanto, você pode obter uma resposta diferente da mostrada aqui.\n\nO Copilot pode sugerir código que implementa um mecanismo de repetições com backoff exponencial para limitar a frequência das tentativas de repetição.\n\nPor exemplo:\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\nNeste exemplo, o Copilot inclui a configuração de uma sessão de repetição para que o código possa repetir automaticamente as solicitações se elas falharem devido a códigos de status específicos (500, 502, 504). O `backoff_factor` aumenta gradualmente o atraso entre novas tentativas, ajudando a evitar exceder ainda mais o limite da taxa da API.\n\n## Leitura adicional\n\n* [Engenharia de prompts para o GitHub Copilot Chat](/pt/copilot/using-github-copilot/prompt-engineering-for-github-copilot)\n* [Práticas recomendadas para usar GitHub Copilot](/pt/copilot/using-github-copilot/best-practices-for-using-github-copilot)"}