⚗️
Consumindo APIs com Elixir
  • Introdução
  • Sobre o autor
  • O valor desse livro
  • Introdução
    • Por que elixir?
    • Como ler este livro
    • Sobre o conteúdo do livro
  • Configurando ambiente
    • Instalando o Elixir
    • Criando um projeto
  • Construindo um cliente usando Tesla
    • Iniciando
    • Tesla
      • O que é o Tesla
      • Instalando Tesla
    • Criando o Client
    • Estruturando resposta
    • Estratégia de teste para requisições
    • Instalando Bypass
    • Mockando requisições do cliente com Bypass
    • Tratando dados da resposta
  • Problemas de API externa
    • Erro genérico
    • O que é o rate limit
    • Rate Limite de curta duração
      • Reexecutando uma requisição
    • Rate Limit de longa duração
      • Agendando uma nova tentativa de requisição
      • Configurações necessárias
      • Adicionando Ecto ao projeto
      • O que é o Oban
      • Instalando Oban
      • Criando uma requisição assíncrona
      • Configurando quantidade de tentativas no Oban
  • Compondo integrações
    • Level up
    • Marvel API
      • Criando uma conta
      • Lendo o endpoint de Comics
      • Criando o cliente da Marvel
        • Melhorando a segurança
      • Lidando com a resposta
    • Aproveitando ao máximo o Rate Limit
  • Em breve
    • WIP - Supervisor
    • WIP - OAuth
    • WIP - Cacheando requisições
Fornecido por GitBook
Nesta página
  • Uma pequena história
  • Mas o que é Rate Limit exatamente?

Isto foi útil?

  1. Problemas de API externa

O que é o rate limit

AnteriorErro genéricoPróximoRate Limite de curta duração

Atualizado há 11 meses

Isto foi útil?

Uma pequena história

Imagine que você criou um serviço. Outros programas se conectam a ele. Seu custo é baixo e isso é ótimo. De repente, algo explode em seu painel da AWS. A conta de $100 dolares vai para $500 sem a adição de nenhum cliente. Você não entende o que aconteceu. Acessa os logs e percebe que um único usuário (programa que se integra com você) está realizando 100 requisições por segundo. Isso não faz sentido, ele precisaria apenas de uma requisição a cada minuto para se manter atualizado. Para resolver esse problema, você pede para seu time implementar um rate limit.

O usuário então tem permissão de fazer 5 requisições por minuto. Caso passe do limite, ele é penalizado e recebe um status indicando que fez muitas requisições (status 429). Até que a penalidade seja resetada, o usuário estará bloqueado de requisitar recursos do serviço.

Com esse exemplo, demonstrei a necessidade do rate limit em serviços. Estou mostrando dessa forma para você entender que não é algo que existe apenas por existir. Ele tem um proposito de controle. Seja de recurso, seja de modelo de negócio (você pode pagar mais para liberar mais requisições se quiser.)

Já que você quer se conectar a outros serviços, acabará encontrando essa tecnica uma hora ou outra e vai precisar saber o que fazer em relação a ela.

Mas o que é Rate Limit exatamente?

Ele é uma técnica para para limitar o número de requisições que podem ser feitos em uma faixa de tempo. Exemplo

  • Máximo de 10 requisições por segundo

  • Máximo de 500 requisições por minuto

  • Máximo de 1000 requisições por mês

Ao chegar ao limite de execução, receberemos o .

A decisão de APIs usarem ela são diversas:

  • Prevenir carga alta de requisições;

  • Prevenir algum tipo de abuso em relação a API (principalmente públicas)

  • Estratégia de negócio. Podendo enquadrar seu cliente em uma faixa de preço com um máximo de requisições.

Isso pode ser um problema quando tentamos integrar com algum serviço. Queremos nos beneficiar o máximo e não fazer requisições que desperdiçam a cota. Vamos dar uma olhada em possíveis soluções para esse limitador.

status 429