GAE中的Braintree错误 - 连接错误 - 5尝试获取阻塞套接字选项

时间:2015-10-09 11:22:12

标签: python-2.7 google-app-engine braintree

INFO     2015-10-09 11:07:31,718 connectionpool.py:695] Starting new HTTPS connection (1): api.sandbox.braintreegateway.com
DEBUG    2015-10-09 11:07:31,724 api_server.py:277] Handled remote_socket.Resolve in 0.0028
DEBUG    2015-10-09 11:07:31,728 api_server.py:277] Handled remote_socket.CreateSocket in 0.0009
DEBUG    2015-10-09 11:07:32,049 api_server.py:277] Handled remote_socket.Connect in 0.3168
DEBUG    2015-10-09 11:07:32,055 api_server.py:272] Exception while handling service_name: "remote_socket"
method: "GetSocketOptions"
request: "\n$d15a35d7-d299-43c1-ba76-8bf4107f8850\022\006\010\001\020\003\032\000"
request_id: "aiUMNcTaLS"

Traceback (most recent call last):
  File "/home/abc/Downloads/google-appengine/google_appengine/google/appengine/tools/devappserver2/api_server.py", line 247, in _handle_POST
    api_response = _execute_request(request).Encode()
  File "/home/abc/Downloads/google-appengine/google_appengine/google/appengine/tools/devappserver2/api_server.py", line 186, in _execute_request
    make_request()
  File "/home/abc/Downloads/google-appengine/google_appengine/google/appengine/tools/devappserver2/api_server.py", line 181, in make_request
    request_id)
  File "/home/abc/Downloads/google-appengine/google_appengine/google/appengine/api/apiproxy_stub.py", line 131, in MakeSyncCall
    method(request, response)
  File "/home/abc/Downloads/google-appengine/google_appengine/google/appengine/api/remote_socket/_remote_socket_stub.py", line 56, in WrappedMethod
    return method(self, *args, **kwargs)
  File "/home/abc/Downloads/google-appengine/google_appengine/google/appengine/api/remote_socket/_remote_socket_stub.py", line 265, in _Dynamic_GetSocketOptions
    'Attempt to get blocked socket option.')
ApplicationError: ApplicationError: 5 Attempt to get blocked socket option.


DEBUG    2015-10-09 11:07:32,056 api_server.py:277] Handled remote_socket.GetSocketOptions in 0.0014
INFO     2015-10-09 11:07:32,058 views.py:570] handle_exception
INFO     2015-10-09 21:28:17,317 views.py:559] Traceback (most recent call last):

  File "/home/abc/Downloads/google-appengine/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 570, in dispatch
    return method(*args, **kwargs)

  File "/home/abc/projects/src/views.py", line 806, in get
    self._callHandlingMethod(url, self.getRegexps)

  File "/home/abc/projects/src/views.py", line 883, in _callHandlingMethod
    function(*matched.groups())

  File "/home/abc/projects/src/views.py", line 2992, in buy_get
    "client_token": braintree.ClientToken.generate(),

  File "/home/abc/projects/src/lib/braintree/client_token.py", line 25, in generate
    return gateway.generate(params)

  File "/home/abc/projects/src/lib/braintree/client_token_gateway.py", line 17, in generate
    response = self.config.http().post("/client_token", params)

  File "/home/abc/projects/src/lib/braintree/util/http.py", line 49, in post
    return self.__http_do("POST", path, params)

  File "/home/abc/projects/src/lib/braintree/util/http.py", line 66, in __http_do
    status, response_body = http_strategy.http_do(http_verb, full_path, self.__headers(), request_body)

  File "/home/abc/projects/src/lib/braintree/util/http.py", line 87, in http_do
    timeout=self.config.timeout

  File "/home/abc/projects/src/lib/requests/api.py", line 92, in post
    return request('post', url, data=data, **kwargs)

  File "/home/abc/projects/src/lib/requests/api.py", line 48, in request
    return session.request(method=method, url=url, **kwargs)

  File "/home/abc/projects/src/lib/requests/sessions.py", line 451, in request
    resp = self.send(prep, **send_kwargs)

  File "/home/abc/projects/src/lib/requests/sessions.py", line 557, in send
    r = adapter.send(request, **kwargs)

  File "/home/abc/projects/src/lib/requests/adapters.py", line 407, in send
    raise ConnectionError(err, request=request)

ConnectionError: ('Connection aborted.', error(13, 'Permission denied'))

这似乎是一个https问题。我尝试了不同的方法

a)https://github.com/agfor/braintree-python-appengine。给我同样的错误

b)我认为这可能是此问题的错误 - https://urllib3.readthedocs.org/en/latest/security.html#openssl-pyopenssl 但是在更新所需的库时,我陷入了OpenSSL.crypto导致导致失败的问题。

帮助任何人!

2 个答案:

答案 0 :(得分:2)

看起来braintree正在尝试使用GAE不支持的套接字选项,您可以在此处看到支持的选项列表https://cloud.google.com/appengine/docs/python/sockets/,其中还指出尝试获取不受支持的选项会引发错误

答案 1 :(得分:0)

Braintree版本 - 3.20.0 请求版本 - 2.7.0

在我朋友的帮助下,我使用了以下黑客 - 方法中braintree/util/http.py的{​​{1}}

__http_do

使用这个hack,我能够让事情发生。希望这有助于任何人遇到同样的问题。