Closed alanhamlett closed 8 years ago
I'm now passing wrap_http_exceptions=True
to braintree.Configuration.configure
to get a better error message. This is happening consistently for the same user.
After wrapping http exceptions, I'm getting an UnexpectedError
.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "app/models.py", line 3378, in customer
self._customer = PaymentProcessor.get_customer(self.user, self.type)[0]
File "app/models.py", line 3353, in get_customer
'email': user.email,
File "/opt/wakatime/current/venv/local/lib/python2.7/site-packages/braintree/customer.py", line 102, in create
return Configuration.gateway().customer.create(params)
File "/opt/wakatime/current/venv/local/lib/python2.7/site-packages/braintree/customer_gateway.py", line 26, in create
return self._post("/customers", {"customer": params})
File "/opt/wakatime/current/venv/local/lib/python2.7/site-packages/braintree/customer_gateway.py", line 88, in _post
response = self.config.http().post(self.config.base_merchant_path() + url, params)
File "/opt/wakatime/current/venv/local/lib/python2.7/site-packages/braintree/util/http.py", line 49, in post
return self.__http_do("POST", path, params)
File "/opt/wakatime/current/venv/local/lib/python2.7/site-packages/braintree/util/http.py", line 70, in __http_do
http_strategy.handle_exception(e)
File "/opt/wakatime/current/venv/local/lib/python2.7/site-packages/braintree/util/http.py", line 101, in handle_exception
raise UnexpectedError(exception)
braintree.exceptions.unexpected_error.UnexpectedError: cannot make memory view because object does not have the buffer interface
The traceback was lost because raise e
does not preserve context. After getting the original traceback it looks like a bug in the requests library:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "app/models.py", line 3378, in customer
self._customer = PaymentProcessor.get_customer(self.user, self.type)[0]
File "app/models.py", line 3353, in get_customer
'email': user.email,
File "/opt/wakatime/current/venv/local/lib/python2.7/site-packages/braintree/customer.py", line 102, in create
return Configuration.gateway().customer.create(params)
File "/opt/wakatime/current/venv/local/lib/python2.7/site-packages/braintree/customer_gateway.py", line 26, in create
return self._post("/customers", {"customer": params})
File "/opt/wakatime/current/venv/local/lib/python2.7/site-packages/braintree/customer_gateway.py", line 88, in _post
response = self.config.http().post(self.config.base_merchant_path() + url, params)
File "/opt/wakatime/current/venv/local/lib/python2.7/site-packages/braintree/util/http.py", line 49, in post
return self.__http_do("POST", path, params)
File "/opt/wakatime/current/venv/local/lib/python2.7/site-packages/braintree/util/http.py", line 67, in __http_do
status, response_body = http_strategy.http_do(http_verb, full_path, self.__headers(), request_body)
File "/opt/wakatime/current/venv/local/lib/python2.7/site-packages/braintree/util/http.py", line 94, in http_do
timeout=self.config.timeout
File "/opt/wakatime/current/venv/local/lib/python2.7/site-packages/requests/api.py", line 109, in post
return request('post', url, data=data, json=json, **kwargs)
File "/opt/wakatime/current/venv/local/lib/python2.7/site-packages/requests/api.py", line 50, in request
response = session.request(method=method, url=url, **kwargs)
File "/opt/wakatime/current/venv/local/lib/python2.7/site-packages/requests/sessions.py", line 468, in request
resp = self.send(prep, **send_kwargs)
File "/opt/wakatime/current/venv/local/lib/python2.7/site-packages/requests/sessions.py", line 576, in send
r = adapter.send(request, **kwargs)
File "/opt/wakatime/current/venv/local/lib/python2.7/site-packages/requests/adapters.py", line 370, in send
timeout=timeout
File "/opt/wakatime/current/venv/local/lib/python2.7/site-packages/requests/packages/urllib3/connectionpool.py", line 559, in urlopen
body=body, headers=headers)
File "/opt/wakatime/current/venv/local/lib/python2.7/site-packages/requests/packages/urllib3/connectionpool.py", line 353, in _make_request
conn.request(method, url, **httplib_request_kw)
File "/usr/lib/python2.7/httplib.py", line 979, in request
self._send_request(method, url, body, headers)
File "/usr/lib/python2.7/httplib.py", line 1013, in _send_request
self.endheaders(body)
File "/usr/lib/python2.7/httplib.py", line 975, in endheaders
self._send_output(message_body)
File "/usr/lib/python2.7/httplib.py", line 839, in _send_output
self.send(message_body)
File "/usr/lib/python2.7/httplib.py", line 811, in send
self.sock.sendall(data)
File "/opt/wakatime/current/venv/local/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", line 216, in sendall
data = memoryview(data)
TypeError: cannot make memory view because object does not have the buffer interface
Related to kennethreitz/requests#2818, waiting on urllib3 to release this fix shazow/urllib3#719.
This is critical :-1:
@po5i Until a fixed version of requests
is released, I'd suggest downgrading to a known-good version. If you're not on Google App Engine, any version before 2.8.0 should work.
OMG. when could it be fixed.
@zagfai Please see my previous comment. A new version of requests
-- 2.9.0 -- is expected soon, which should fix this issue. Until then, you'll need to downgrade to an older version of requests.
@po5i @zagfai @alanhamlett
To close the loop -- requests
2.9.1 is out, and this issue should be resolved.
Awesome, thanks!
This error happens when running
braintree.Customer.create({'email': email})
where email is the user's email address.