Las solicitudes de Python en Google App Engine no funcionan para HTTPS

Estoy usando python-request en Google App Engine y no funciona como se esperaba para HTTPS. Veamos un ejemplo:

import requests requests.get('https://www.digitalocean.com') 

Esa línea funciona perfectamente si la ejecuto en un terminal. La respuesta es 200 OK (sin redirecciones).

Sin embargo, si lo ejecuto en GAE, aparece un error de TooManyRedirects. Tratando de averiguar cuál es el problema que ejecuto con allow_redirects = False y puedo ver que la respuesta es una redirección (301) que apunta a la misma URL. (El valor del encabezado ‘ubicación’ es ‘ https://www.digitalocean.com ‘). Esto obviamente (cuando allow_redirect = True) ocurre una y otra vez hasta que se genera el error TooManyRedirects.

Entonces, parece que las solicitudes de python no están funcionando en GAE para HTTPS (he probado con varias URL). Sin embargo, HTTP funciona perfectamente.

¿Alguna idea de lo que está pasando?

Gracias por adelantado.

La degradación a las solicitudes == 2.1.0 funcionó para mí.

Tener un urllib3 actualizado es importante para resolver un error no relacionado ( import pwd , como recuerdo).

Esperemos que App Engine solucione esto pronto, ya que las solicitudes no .

EDITAR:

Creo que también puede parchear esto en las últimas solicitudes comentando las líneas 161-175 en sessions.py . No probado

Ahora hay una solución mejor que cambiar la versión de sus requests . Como se sugiere en los documentos oficiales, puedes hacer requests parches para jugar bien con Google App Engine.

Primero instale request-toolbelt:

 pip install -t lib requests-toolbelt 

Luego en su archivo main.py (o equivalente):

 import requests_toolbelt.adapters.appengine requests_toolbelt.adapters.appengine.monkeypatch()