Limite da taxa primária
Os limites de taxa estão desabilitados por padrão no GitHub Enterprise Server. Fale com o administrador do site para confirmar os limites de velocidade da sua instância.
Se você for um administrador de site, poderá definir limites de taxa para a sua instância. Para saber mais, confira Como configurar limites de taxa.
Se você estiver desenvolvendo um aplicativo para usuários ou organizações fora da sua instância, os limites de taxa padrão do serão aplicados. Para mais informações, confira Limites de taxas e limites de consultas para a API GraphQL na documentação do GitHub Free.
Limite do nó
Para serem aprovados na validação de esquema, todas as chamadas à API do GraphQL precisam atender a estes padrões:
- Os clientes precisam fornecer um argumento
firstoulastem qualquer conexão. - Os valores de
firstelastprecisam estar entre 1 e 100. - As chamadas individuais não podem solicitar mais de 500 mil nós no total.
Calculando os nós em uma chamada
Estes dois exemplos mostram como calcular os nós totais em uma chamada.
-
Consulta simples:
query { viewer { repositories(first: 50) { edges { repository:node { name issues(first: 10) { totalCount edges { node { title bodyHTML } } } } } } } }Cálculo:
50 = 50 repositories + 50 x 10 = 500 repository issues = 550 total nodes
-
Consulta complexa:
query { viewer { repositories(first: 50) { edges { repository:node { name pullRequests(first: 20) { edges { pullRequest:node { title comments(first: 10) { edges { comment:node { bodyHTML } } } } } } issues(first: 20) { totalCount edges { issue:node { title bodyHTML comments(first: 10) { edges { comment:node { bodyHTML } } } } } } } } } followers(first: 10) { edges { follower:node { login } } } } }Cálculo:
50 = 50 repositories + 50 x 20 = 1,000 pullRequests + 50 x 20 x 10 = 10,000 pullRequest comments + 50 x 20 = 1,000 issues + 50 x 20 x 10 = 10,000 issue comments + 10 = 10 followers = 22,060 total nodes
Estratégias de otimização de consulta
-
**Limitar o número de objetos**: use valores menores para argumentos `first` ou `last` e paginar pelos resultados. -
**Reduzir a profundidade da consulta**: evite solicitar objetos profundamente aninhados, a menos que necessário. -
**Resultados do filtro**: use argumentos para filtrar dados e retornar apenas o que você precisa. -
**Dividir consultas grandes**: divida consultas complexas em várias consultas mais simples. -
**Solicitar apenas os campos necessários**: selecione apenas os campos de que você precisa, em vez de solicitar todos os campos disponíveis.
Seguindo essas estratégias, você pode reduzir a probabilidade de atingir os limites de recursos e melhorar o desempenho e a confiabilidade de suas solicitações de API.