platform / google_appengine / google / appengine / api / remote_socket / _remote_socket_stub.py ,它在常量_MOCK_SOCKET_OPTIONS
中找到了一些 模拟 的(级别,选项)套接字对,它们缺少(1、3)对,因此,我的意思是下面的级别和选项(我猜星号是所需的值):
级别(值:1):
选项(值:3):
因此,通过设置代理,我想我要的是 组,但是 值又如何呢? 值是与十六进制二进制相关的字符串,如“ 00000000”(用于keepalive)和“ 01000000”(reuseaddr):https://github.com/GoogleCloudPlatform/python-compat-runtime/blob/master/appengine- compat/exported_appengine_sdk/google/appengine/api/remote_socket/_remote_socket_stub.py#L97
在哪里可以找到(1,3)缺失对的类似值?
以后编辑:
我添加了“ SOL_SOCKET:SO_TYPE = 80000000”组,现在它在ssl模块上中断(为了支持https而必须启用该模块;无需修补,只需在app.yaml中启用它):https://pastebin.com/9KQjdEgL 通过识别套接字类型为 ,我猜这可能是以下常量之一:
后来…
因此我意识到128值是上面我的小端模拟的实际值,因此我将组更改为:“ SOL_SOCKET:SO_TYPE = 01000000”,这可以识别socket.soCK_STREAM
套接字类型,该套接字类型实际上仅用于此检查,但随后又,它会崩溃,因为ssl
无法理解GAE的自定义套接字对象:https://pastebin.com/t2pUuW2V(<google.appengine.api.remote_socket._remote_socket.socket object at 0x7f0cd037f690>
)。在有和没有requests
猴子修补的情况下尝试了此操作。
关于dev_appserver沙箱,GAE自定义socket
不能完全与SSL(在隧道上)一起使用,Python标准socket
不能与GAE(我想是不可补丁的)select
模块一起使用。
解决方案:将远程部署的相同行为引入本地开发环境。