yt: назначьте слишком много недавних вызовов - PullRequest
4 голосов
/ 10 января 2010

Я использую API YouTube для получения содержимого из учетной записи YouTube (с просто пользовательский канал ... без аутентификации пользователя) на нашем сайте. Со вчерашнего утра мы продолжаем получать:

<error>
    <domain>yt:quota</domain>
    <code>too_many_recent_calls</code>
</error>

Все началось как случайное явление, но очень скоро мы получаем эту ошибку в 100% случаев. Я попробовал следующие инструкции по ограничению квоты , но все равно получаю ошибку:

Если вы получаете ошибки квоты, Есть пара шагов, которые вы можете сделать:

  • Ваши запросы должны содержать ваш ключ разработчика и идентификатор клиента. Я делаю это
  • Убедитесь, что действия, выполняемые вашим кодом, инициированы пользователем. Я делаю это
  • Передать IP-адрес пользователя в параметре запроса ограничения. Я могу пропускать только IP прокси / сервера адрес, а не точный адрес клиента потому что Google AppEngine не служба поддержки InetAddress.getLocalHost (). GetHostAddress ())
  • Если вы запрашиваете аутентифицированные каналы, войдите в систему как пользователь, а не как общесайтовый аккаунт. я не использую Аутентификация

Ответы [ 2 ]

6 голосов
/ 10 января 2011

У меня была такая же проблема с Youtube API + App-Engine. Я передавал ключ разработчика в качестве параметра запроса, а также другие предложенные параметры (user-ip, ключ разработчика в URL-адресе запроса) и все еще не работал с App Engine.

Что ж, похоже, ключ разработчика не прошел (хотя ключ X-Gdata присутствовал в заголовках запросов POST). Я нашел это решение:

Каждый экземпляр YouTubeService имеет атрибуты developer_key и client_id . При установке этих атрибутов при создании экземпляра службы (вместо установки «X-GData-Key» в заголовках или атрибута key экземпляра запроса) developer_key для приложения id: client_id для отправки в каждом запросе и успешного принятия.

Вы можете установить эти значения в конструкторе YouTubeService для API Java .

Если вы используете API для Python, вы можете установить параметры напрямую следующим образом:

client = gdata.youtube.service.YouTubeService()
    client.client_id = <application_id>
    client.developer_key = <developer_key>

Я заметил, что мой developer_key не прошел, проверив статистику на панели инструментов API YouTube.

2 голосов
/ 31 октября 2012

Перестраивая колесо для API YouTube с Python, я обнаружил, что могло вызвать неузнаваемость X-GData-Key. Это ответы @Javierfdr.

Краткий ответ: urllib2 выполняет .capitalize() и .title() и портит заголовки.

В модуле urllib2 имеется множество таких кодов. Некоторые в обработчиках, а некоторые в Request. X-GData-Key преобразуется в X-Gdata-Key ( с названием , обратите внимание на нижний d ) или X-gdata-key (когда пишется с заглавной буквы ). Мне пришлось создать собственный HTTPSHandler и объект Request, чтобы закомментировать строки.

Я не уверен, почему они это делают, но длинная ветка рассказывает об этой проблеме в http://bugs.python.org/issue2275. Я думаю, что это не дошло до Python 2.7.

Я опробовал библиотеку запросов , и она не перепутала ее с заголовками. Ура :))

Просто чтобы другие не тратили впустую свое время или хотя бы имели представление о том, что происходит.

- редактировать -

На самом деле, я обнаружил, что RFC утверждает, что имена полей заголовка нечувствительны к регистру, и я не смог найти никаких доказательств того, что Google не делает. Я ошибся в приведенном ниже утверждении, у меня все еще нет статистики :( Извините, что ввел в заблуждение.

После изменения всех этих параметров я наконец-то увидел статистику в YouTube API Панель инструментов - всегда удивлялся, почему до сих пор не было данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...