我在Google App Engine上使用了python-request,但它无法正常使用HTTPS。我们来看一个例子:
import requests
requests.get('https://www.digitalocean.com')
如果我在终端中执行它,该行可以正常工作。响应是200 OK(没有重定向)。
但是,如果我在GAE上执行它,则会引发TooManyRedirects错误。 试图找出我用allow_redirects = False执行的问题是什么,我可以看到响应是一个重定向(301),它指向同一个url! ('location'标头值为' https://www.digitalocean.com ')。这显然(当allow_redirect = True时)反复发生,直到引发TooManyRedirects错误。
所以似乎python-requests不能用于GAE for HTTPS(我用几个URL测试过)。但HTTP工作得很好。
有关正在发生的事情的任何想法?
提前致谢。
答案 0 :(得分:17)
降级到请求== 2.1.0对我有用。
拥有最新的urllib3对于解决不相关的错误非常重要(import pwd
,我记得)。
希望App Engine尽快修复此问题,作为请求won't。
编辑:
我认为您也可以通过评论lines 161-175 in sessions.py在最新请求中修补此问题。未经测试。
答案 1 :(得分:4)
现在有一种比改变requests
版本更好的解决方案。正如official docs中所建议的那样,您可以使用requests
进行补丁,以便与Google App Engine很好地配合使用。
首先install次请求 - 工具带:
pip install -t lib requests-toolbelt
然后在您的main.py
文件(或同等文件)中:
import requests_toolbelt.adapters.appengine
requests_toolbelt.adapters.appengine.monkeypatch()