⚗️
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á 11 meses

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