Google App Engine上的python请求不适用于HTTPS

Cur*_*rro 17 python google-app-engine python-2.7 python-requests

我在Google App Engine上使用了python-request,但它没有像HTTPS那样正常工作.我们来看一个例子:

import requests
requests.get('https://www.digitalocean.com')
Run Code Online (Sandbox Code Playgroud)

如果我在终端中执行它,该行将完美运行.响应是200 OK(没有重定向).

但是,如果我在GAE上执行它,则会引发TooManyRedirects错误.试图找出我用allow_redirects = False执行的问题是什么,我可以看到响应是重定向(301),它指向同一个url!('location'标头值为' https://www.digitalocean.com ').这显然(当allow_redirect = True时)反复发生,直到引发TooManyRedirects错误.

因此,似乎python请求不适用于HTTPS的GAE(我已经使用多个URL进行了测试).然而HTTP工作得很好.

关于发生了什么的任何想法?

提前致谢.

rat*_*ray 17

降级到请求== 2.1.0对我有用.

拥有最新的urllib3对于解决不相关的错误非常重要(import pwd我记得).

希望App Engine尽快修复,因为请求不会.

编辑:

我想你也可以通过在sessions.py中注释第161-175行来修补最新的请求.未经测试.

  • 更正:请求2.1.0工作,1.2.3不工作. (2认同)

Ale*_*lex 5

现在有比更改requests版本更好的解决方案。正如官方文档中所建议的那样,您可以使用猴子补丁requests与 Google App Engine 配合使用。

首先安装请求工具带:

pip install -t lib requests-toolbelt
Run Code Online (Sandbox Code Playgroud)

然后在您的main.py文件(或等效文件)中:

import requests_toolbelt.adapters.appengine

requests_toolbelt.adapters.appengine.monkeypatch()
Run Code Online (Sandbox Code Playgroud)