Почему поиск видео на YouTube с использованием API-интерфейса Python в Google App Engine идет медленно и выдает мне это предупреждение? - PullRequest
1 голос
/ 06 декабря 2011

Мое приложение является модификацией "Руководства по началу работы" для API данных Python YouTube , найденной здесь . Вот мой код:

def initialize():

    yt_service = gdata.youtube.service.YouTubeService()

    # Turn on HTTPS/SSL access.
    # Note: SSL is not available at this time for uploads.
    yt_service.ssl = True

    yt_service.developer_key = 'ACTUAL_API_KEY'
    yt_service.client_id = 'CLIENT_ID'

def getTopVideo(self, searchTerm):
    yt_service = gdata.youtube.service.YouTubeService()
    query = gdata.youtube.service.YouTubeVideoQuery()
    query.vq = searchTerm
    query.orderby = 'relevance'
    query.racy = 'include'
    feed = yt_service.YouTubeQuery(query)
    return feed.entry[0]

Всякий раз, когда код «getTopVideo» выполняется внутри моего приложения Google App Engine, я получаю предупреждение:

WARNING  {timestamp} urlfetch_stub.py:423] Stripped prohibited headers from URLFetch request: ['Host']

Другая проблема заключается в том, что когда я пытаюсь сделать несколько запросов (~ 5), между поисками возникает задержка от 0,5 до 1 секунды. Я могу сказать это, посмотрев на временные метки предупреждения, показанного выше.

Что я могу сделать, чтобы избавиться от этого предупреждения и ускорить поиск?

Заранее спасибо.

1 Ответ

1 голос
/ 06 декабря 2011

Похоже, что это «функция» безопасности в движке приложения: http://code.google.com/appengine/docs/python/urlfetch/overview.html#Request_Headers

Вот фактический код, который выполняет разметку в строке 238: http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/api/urlfetch_stub.py?r=56

Человек, который столкнулся с этой ошибкой, обошел ее, используя try / исключением, что может быть не лучшим решением, но кажется, что движок приложения не пропустит иначе: https://github.com/tweepy/tweepy/issues/91

...