等待来自URL的HTTP响应时超过截止时间:HTTPException

时间:2014-10-02 15:14:02

标签: python google-app-engine python-2.7 httplib httpexception

我正在开发一个使用 tweepy 来监听Twitter哈希标签的应用。我已将我的应用程序上传到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

我怎么解决这个问题?

2 个答案:

答案 0 :(得分:3)

你可以设置url fetch的默认超时,我相信它默认设置为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

答案 1 :(得分:0)

我正在GAE上运行一个简单的应用程序,该应用程序使用依赖于请求的jenkinsapi库与jenkins CI服务器进行交互。我正在运送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,超时默认值非常低。增加两个数字,我必须修补库,这有帮助,我不再看到这个问题了。

实际上,它仍然会发生,但是:

在连接被HTTPException错误连接后重试(3次尝试仍然存在)(&#39;等待来自URL的HTTP响应时超过截止日期...