Skip to main content

Ограничения скорости и ограничения узлов для API GraphQL

API GraphQL GitHub имеет ограничения для защиты от чрезмерных вызовов к серверам GitHub или злоупотребления ими.

Предельное число узлов

Чтобы пройти проверку схемы, все вызовы API GraphQL должны соответствовать следующим стандартам:

  • Клиенты должны предоставлять аргумент first или last для любого подключения.
  • Значения first и last должны находиться в пределах 1–100.
  • В отдельных вызовах не может запрашивать более 500 000 узлов.

Подсчет узлов в вызове

В этих двух примерах показано, как вычислить общее количество узлов в вызове.

  1. Простой запрос:

    query {
      viewer {
        repositories(first: 50) {
          edges {
            repository:node {
              name
    
              issues(first: 10) {
                totalCount
                edges {
                  node {
                    title
                    bodyHTML
                  }
                }
              }
            }
          }
        }
      }
    }

    Расчет:

    50         = 50 repositories
     +
    50 x 10  = 500 repository issues
    
                = 550 total nodes
  2. Сложный запрос:

    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
            }
          }
        }
      }
    }

    Расчет:

    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

Ограничение основной скорости

Ограничения скорости отключены по умолчанию для GitHub Enterprise Server. Обратитесь к администратору сайта, чтобы подтвердить ограничения скорости для вашего экземпляра.

Если вы являетесь администратором сайта, вы можете задать ограничения скорости для вашего экземпляра. Дополнительные сведения см. в разделе Настройка ограничений скорости.

Если вы разрабатываете приложение для пользователей или организаций за пределами вашего экземпляра, применяются стандартные ограничения скорости GitHub . Дополнительные сведения см. в разделе "Ограничения скорости и ограничения узлов для API GraphQL" в документации по GitHub Free.