请问您的appengine_config.py
有这个吗?
import os
from google.appengine.ext import vendor
from google.appengine.ext.appstats import recording
appstats_CALC_RPC_COSTS = True
# Add any libraries installed in the "lib" folder.
vendor.add('lib')
def webapp_add_wsgi_middleware(app):
app = recording.appstats_wsgi_middleware(app)
return app
# if on localhost
if os.environ.get('SERVER_SOFTWARE', '').startswith('Development'):
import imp
import os.path
import inspect
from google.appengine.tools.devappserver2.python import sandbox
sandbox._WHITE_LIST_C_MODULES += ['_ssl', '_socket']
# Use the system socket.
real_os_src_path = os.path.realpath(inspect.getsourcefile(os))
psocket = os.path.join(os.path.dirname(real_os_src_path), 'socket.py')
imp.load_source('socket', psocket)
else:
# Doing this on dev_appserver/localhost seems to cause outbound https requests to fail
from lib import requests
from lib.requests_toolbelt.adapters import appengine as requests_toolbelt_appengine
# Use the App Engine Requests adapter. This makes sure that Requests uses
# URLFetch.
requests_toolbelt_appengine.monkeypatch()
我复制了我的整个文件,因为我不确定你已经有哪些部分,但关键部分是最终的if-else。我经历了一大堆麻烦,让TLS 1.2在prod上工作,主要归结于为App Engine的特殊ssl库& requests_toolbelt_appengine.monkeypatch()
指定版本2.7.11
。
像你这样在我的本地主机上打破了SSL,所以现在我只在产品上做requests_toolbelt_appengine.monkeypatch()
,并且在本地主机上我做了'白名单本地套接字库'的技巧,你可能已经看到了。部分原因是你使用的是什么样的组合版本。希望这有助于。
从我app.yaml
值得注意的项目:
env_variables:
theme: 'default'
GAE_USE_SOCKETS_HTTPLIB : 'true' # TLS 1.2
libraries:
- name: jinja2
version: "2.6"
- name: webapp2
version: "2.5.2"
- name: markupsafe
version: "0.15"
- name: ssl
version: "2.7.11" # TLS 1.2
- name: pycrypto
version: "2.6"
- name: lxml
version: latest
而且我使用python-请求2.18.2
编辑: 在我~/.bash_profile
,谷歌云SDK加入到我的路径:
export PATH="/Users/alex/google-cloud-sdk/platform/google_appengine/:$PATH"
。
如果我去那个文件夹,我可以跟着进口from google.appengine.tools.devappserver2.python import sandbox
一路贯穿。 (包括下面的截图)
那么很可能需要完全重新安装Python的OpenSSL的一次已经更新。您还需要确保编译Python * AGAINST *即OpenSSL版本。我对Google App Engine的工作原理并不熟悉,看到他们事实上的python安装不会更新,这有些令人惊讶。在这里接触他们的开发者支持可能是明智的。 – korben