Превышен крайний срок ожидания ответа HTTP от URL-адреса: HTTPException

Я разрабатываю приложение для прослушивания хэш-тегов Twitter с помощью tweepy. Я загрузил свое приложение в Google App Engine, и оно дает мне следующую ошибку.

Последняя строка обратной трассировки:

File "/base/data/home/runtimes/python27/python27_dist/lib/python2.7/gae_override/httplib.py", line 524, in getresponse
    raise HTTPException(str(e))
HTTPException: Deadline exceeded while waiting for HTTP response from URL: https://stream.twitter.com/1.1/statuses/filter.json?delimited=length

Как я мог это решить?


person Bishan    schedule 02.10.2014    source источник
comment
Как насчет того, чтобы добавить сюда часть своего кода (а именно соответствующую часть)???   -  person barak manos    schedule 02.10.2014
comment
Когда я пытаюсь попасть по URL-адресу, он запрашивает некоторую аутентификацию. Вы уверены, что правильно авторизованы? это может быть причиной того, что ваш запрос зависает на минуту, прежде чем появляется эта ошибка. В любом случае, как указал Барак Манос... нам нужен какой-то код, чтобы увидеть, что можно сделать.   -  person Patrice    schedule 02.10.2014
comment
@barakmanos Я использую этот проект   -  person Bishan    schedule 02.10.2014
comment
@Julldar Аутентификация в порядке. У меня есть локальный .json файл, и я могу твитнуть данные о нем. Ссылка на код, добавленный в комментарии выше.   -  person Bishan    schedule 02.10.2014


Ответы (2)


Вы можете установить время ожидания по умолчанию для выборки URL, я полагаю, что по умолчанию оно установлено на 5 секунд. Этот вызов конечной точки может занять больше времени. Может 30 секунд?

urlfetch.fetch(url=url, method=urlfetch.GET, deadline=30)

Вы можете увеличить до 60 на документы: https://cloud.google.com/appengine/docs/python/urlfetch/#Python_Fetching_URLs_in_Python

person Bardia D.    schedule 02.10.2014
comment
Я добавил эту строку в свой скрипт. urlfetch.set_default_fetch_deadline(45). Но это не сработало. - person Bishan; 02.10.2014
comment
Возможно, вам потребуется создать appengine_config.py в корне вашего проекта и выполнить эту настройку там. Это конфигурация модуля Python (где вы можете переопределять и устанавливать вещи) при загрузке. cloud.google.com/appengine/docs/python/tools/appengineconfig - person Bardia D.; 03.10.2014

Я запускаю простое приложение в GAE, которое взаимодействует с сервером jenkins CI, используя библиотеку jenkinsapi, которая зависит от запросов. Я отправляю как jenkinsapi, так и запросы с моим приложением, запросы не поддерживаются в GAE, хотя они существуют в Google Cloud SDK, откуда я их взял. jenkinsapi отправляет больное количество запросов на сервер, я получал очень часто

File "/base/data/home/apps/s~jenkins-watcher/v0-1.382631715892564425/libs/requests-2.3.0-py2.7.egg/requests/adapters.py", line 375, in send
    raise ConnectionError(e, request=request)
    ConnectionError: HTTPConnectionPool(host='XXXXXXX', port=8080):
    Max retries exceeded with url: XXXXXX
    (Caused by <class 'gae_override.httplib.HTTPException'>:
    Deadline exceeded while waiting for HTTP response from URL: XXXXXXXX

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

На самом деле, это все еще происходит, но:

Повторная попытка (осталось 3 попытки) после разрыва соединения из-за «HTTPException («Крайний срок» превышен при ожидании ответа HTTP от URL-адреса...

person Zdenek Maxa    schedule 04.03.2015