⚗️
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
  • Número 01
  • Número 02

Isto foi útil?

  1. Problemas de API externa
  2. Rate Limit de longa duração

Agendando uma nova tentativa de requisição

AnteriorRate Limit de longa duraçãoPróximoConfigurações necessárias

Atualizado há 1 ano

Isto foi útil?

Algumas vezes não precisamos que a requisição seja feito na hora. Por exemplo, sincronizar a lista de cafés, para caso algo mudar ou ser adicionado não precisa ser feito na hora. Claro que se conseguirmos fazer diretamente, seria interessante. Mas, nem sempre é possível. E pior, podemos ter chego na quantidade máxima de requisições do dia. Antes, para solucionar o Rate Limit de requisições por segundo, apenas criamos um mecanismo de espera. Nesse caso não vai ser interessante. Não vamos querer fazer o usuário ficar 20h esperando a resposta, certo? O que podemos fazer é adicionar nossa requisição em uma fila, que aguarda por exemplo, um dia para ser executada e deixar isso de forma assíncrona. Ganhamos com:

  1. Não deixamos o usuário preso na tela

  2. Resolvemos o problema do Rate Limit com longa duração (como por exemplo, um dia)

  3. Temos o dado atualizado após essa execução.

Precisamos de alguns requisitos para essa estratégia funcionar.

Número 01

Para realizar a requisitações de forma assincrona, precisamos de toda os dados armazenados para executar quando a hora chegar. Caso você queira que o café com ID 1 seja atualizado, precisamos do ID na hora da sincronia. Para isso, precisaremos de uma ferramenta de armazenamento. Utilizaremos o banco de dados Postgres para manter padrão de mercado.

Tendo escolhido o banco de dados, precisamos nos comunicar com ele. Seguindo também o padrão de mercado, utilizaremos o Ecto. Provavelmente você já usou ou já ouviu falar sobre ele.

Número 02

Precisamos de uma ferramentas que cuide do agendamento e rode os jobs quando a hora chegar. Para fazer isso, iremos utilizar uma ferramenta chamada e agendar a sincronia.

Nossa lista ficou:

Oban
Configurar Ecto para se comunicar com Postgres
Configurar Oban