Con*_*nor 6 python django google-app-engine python-requests
我正在尝试使用以下代码的python请求获取页面views.py:
s = requests.Session()
r = s.get("https://www.23andme.com/")
Run Code Online (Sandbox Code Playgroud)
我收到错误Exceeded 30 redirects.我的应用程序是Google App Engine Django应用程序.我已经将此代码用于python控制台和pythonanywhere.com上的django服务器,但由于某种原因它不适用于谷歌应用引擎.可能是什么导致了这个?谢谢
编辑:似乎我的应用程序中的"请求"模块存在另一个问题.我有这个代码将电子邮件添加到mailchimp列表:
m = mailchimp.Mailchimp(MAILCHIMP_API_KEY)
list_response = m.lists.list()
Run Code Online (Sandbox Code Playgroud)
但如果因错误而失败 HTTPS/SSL is required
尝试安装urllib3(和其他东西,见下文).
请注意,历史上,谷歌应用引擎的请求存在大量问题(请参阅问题#498).这些主要是通过对v1.3附带的GAE的urllib3支持解决的.它很久以前就出现了(当前版本是1.7),所以它可能不是问题,但是当你最初安装请求时,它包含urllib3在一个名为的文件夹中packages,也许它不包括它的全部内容.
我也尝试搜索源代码requests,发现这很有趣:
# Attempt to enable urllib3's SNI support, if possible
try:
from requests.packages.urllib3.contrib import pyopenssl
pyopenssl.inject_into_urllib3()
except ImportError:
pass
Run Code Online (Sandbox Code Playgroud)
更进一步,该contrib软件包包含一个pyopenssl.py脚本,该脚本需要:
具有SNI支持的SSL 2的SSL.
这需要安装以下软件包:
- pyOpenSSL(用0.13测试)
- ndg-httpsclient(用0.3.2测试)
- pyasn1(用0.1.6测试)
所以,总结一下:
安装urllib3和上面提到的其他SSL包,然后尝试运行您再次执行的请求,看看是否有任何更改.我的猜测是,这将(至少)帮助,mailchimp因为它也抱怨SSL/HTTPS问题.
如果这不起作用,请尝试使用urllib3 api而不是requests执行相同的任务,看看是否有效.如果是这样,问题特别urllib3在于requests正在使用的打包,这可能需要一些修补.
import urllib3
http = urllib3.PoolManager()
r = http.request('GET', 'https://www.23andme.com/')
Run Code Online (Sandbox Code Playgroud)对不起,这不是一个明确的解决方案,希望我的一个建议会有所帮助.更新我的进展情况,我会尽力帮助
| 归档时间: |
|
| 查看次数: |
1928 次 |
| 最近记录: |