Внутренняя ошибка сервера, код 7, с клиентом узла речи Google

Я использую модуль node.js для взаимодействия с Google Speech API.

eg.

const Speech = require('@google-cloud/speech');

Я обрабатываю тысячи транскрипций аудиоклипов, как и следовало ожидать ...

speech.recognize(filepath, requestOptions)
  .then((results) => {
    //...
  }

БОЛЬШИНСТВО преуспевает. Однако время от времени я получаю такую ​​ошибку:

Error: Internal server error, code=7. Try your request again.
  at /home/ubuntu/video_captions/source/node_modules/grpc/src/node/src/client.js:434:17

Что за код 7? Я не могу найти его в документации.

Обновление: похоже, я нашел коды ошибок grpc, но коды указаны именами переменных, а не примитивным числовым значением: https://grpc.io/docs/guides/error.html#general-errors


person lance.dolan    schedule 19.07.2017    source источник


Ответы (1)


Ошибка отказа в разрешении

Код ошибки gRPC 7 указывает на _2 _ .

  /** The caller does not have permission to execute the specified
     operation.  PERMISSION_DENIED must not be used for rejections
     caused by exhausting some resource (use RESOURCE_EXHAUSTED
     instead for those errors).  PERMISSION_DENIED must not be
     used if the caller can not be identified (use UNAUTHENTICATED
     instead for those errors). */
  GRPC_STATUS_PERMISSION_DENIED = 7,

Коды ошибок gRPC: аналогичным образом задокументировано здесь.

Коды ошибок Speech API

Cloud Speech API документирует различные коды ошибок, а PERMISSION_DENIED документируется следующим образом :

PERMISSION_DENIED

У вызывающего абонента нет разрешения на выполнение указанной операции. PERMISSION_DENIED не должен использоваться для отклонений, вызванных исчерпанием некоторого ресурса (вместо этих ошибок используйте RESOURCE_EXHAUSTED). PERMISSION_DENIED не должен использоваться, если вызывающий абонент не может быть идентифицирован (вместо этого используйте UNAUTHENTICATED для этих ошибок). Этот код ошибки не означает, что запрос действителен, или запрошенный объект существует или удовлетворяет другим предварительным условиям.

Отображение HTTP: 403 запрещено

Разрешения на облачное хранилище

Также из вашего вопроса неясно, что является источником аудиоконтента. Если он находится в облачном хранилище Google, вы можете убедиться, что у вас есть необходимые разрешения для доступа к контенту, что, как я считаю, может быть возможной причиной появления ошибок отказа в разрешении.

Одноразовые ошибки и ошибки, связанные с запросом

Кроме того, когда вы получаете эту ошибку, вы можете проверить, что произойдет, если вы снова отправите тот же запрос - произойдет ли сбой таким же образом или он будет успешным? Это поможет подтвердить, являются ли они одноразовыми ошибками или связаны с заголовками и / или полезной нагрузкой вашего запроса.

Лимиты запросов

У речевого API есть ограничения на запросы, которые также применяются, убедитесь, что вы не превышая их, вы можете столкнуться с аналогичными ошибками и для них. Хотя, думаю, в этом случае вы увидите другую ошибку RESOURCE_EXHAUSTED вместо PERMISSION_DENIED. Я добавляю это просто для вашего сведения.

Текущие ограничения на использование API для Cloud Speech API следующие (и могут быть изменены):

Type of Limit              Usage Limit
---------------------------------------------------
Requests per 100 seconds*  500
Requests per day*          250,000    
Processing per 100 seconds 5000 seconds of audio    
Processing per day         480 hours of audio
  • Каждый StreamingRecognize сеанс считается одним запросом, даже если он включает в себя несколько кадров аудио StreamingRecognizeRequest в потоке.

Запросы и / или попытки обработки звука, превышающие эти пределы, приведут к ошибке.

Эти ограничения применяются к каждому проекту разработчика Cloud Speech API и используются для всех приложений и IP-адресов, использующих данный проект разработчика.

person Tuxdude    schedule 19.07.2017
comment
Проголосовать за это, потому что это полезно и тщательно. Однако я очень скептически отношусь к тому, что основная проблема - это разрешения. У меня около 50 тысяч запросов gRPC в день, которые выполняются без проблем с разрешением. Я заметил, что простая повторная попытка решает проблему, как следует из ошибки. Однако прошло 40 минут, прежде чем я перестал получать эту ошибку. Моя новая обработка ошибок заключается в том, чтобы проверить это точное сообщение об ошибке и откладывать на ЧАС перед повторной попыткой. Мне повезло, что в моем случае это разумно. Примечание: у меня также есть отдельная обработка, чтобы избежать ограничений квоты запросов :) - person lance.dolan; 28.07.2017