I am receiving the error as "getresponse() got an unexpected keyword argument 'buffering'". Complete error log is :
[INFO ] Kivy v1.8.0
[INFO ] [Logger ] Record log in C:\Users\Sudheer\.kivy\logs\kivy_14-08-15_21.txt
[INFO ] [Factory ] 157 symbols loaded
[DEBUG ] [Cache ] register <kv.lang> with limit=None, timeout=Nones
[DEBUG ] [Cache ] register <kv.image> with limit=None, timeout=60s
[DEBUG ] [Cache ] register <kv.atlas> with limit=None, timeout=Nones
[INFO ] [Image ] Providers: img_tex, img_dds, img_pygame, img_gif (img_pil ignored)
[DEBUG ] [Cache ] register <kv.texture> with limit=1000, timeout=60s
[DEBUG ] [Cache ] register <kv.shader> with limit=1000, timeout=3600s
[DEBUG ] [App ] Loading kv <D:\OS Files\workspace\Assistant\start.kv>
[INFO ] [Text ] Provider: pygame
[DEBUG ] [Cache ] register <kv.loader> with limit=500, timeout=60s
[INFO ] [Loader ] using a thread pool of 2 workers
[DEBUG ] [Cache ] register <textinput.label> with limit=None, timeout=60.0s
[DEBUG ] [Cache ] register <textinput.width> with limit=None, timeout=60.0s
[DEBUG ] [Window ] Ignored <egl_rpi> (import error)
[INFO ] [Window ] Provider: pygame(['window_egl_rpi'] ignored)
[DEBUG ] [Window ] Display driver windib
[DEBUG ] [Window ] Actual window size: 800x600
[DEBUG ] [Window ] Actual color bits r8 g8 b8 a0
[DEBUG ] [Window ] Actual depth bits: 24
[DEBUG ] [Window ] Actual stencil bits: 8
[DEBUG ] [Window ] Actual multisampling samples: 2
GLEW initialization succeeded
[INFO ] [GL ] OpenGL version <b'3.3.0'>
[INFO ] [GL ] OpenGL vendor <b'NVIDIA Corporation'>
[INFO ] [GL ] OpenGL renderer <b'GeForce 9400 GT/PCIe/SSE2'>
[INFO ] [GL ] OpenGL parsed version: 3, 3
[INFO ] [GL ] Shading version <b'3.30 NVIDIA via Cg compiler'>
[INFO ] [GL ] Texture max size <8192>
[INFO ] [GL ] Texture max units <32>
[DEBUG ] [Shader ] Fragment compiled successfully
[DEBUG ] [Shader ] Vertex compiled successfully
[DEBUG ] [ImagePygame ] Load <C:\Kivy180\kivy\kivy\data\glsl\default.png>
[INFO ] [Window ] virtual keyboard not allowed, single mode, not docked
[DEBUG ] [Atlas ] Load <C:\Kivy180\kivy\kivy\data\..\data\images\defaulttheme.atlas>
[DEBUG ] [Atlas ] Need to load 1 images
[DEBUG ] [Atlas ] Load <C:\Kivy180\kivy\kivy\data\..\data\images\defaulttheme-0.png>
[DEBUG ] [ImagePygame ] Load <C:\Kivy180\kivy\kivy\data\..\data\images\defaulttheme-0.png>
[INFO ] [GL ] NPOT texture support is available
[INFO ] [OSC ] using <thread> for socket
[DEBUG ] [Base ] Create provider from mouse
[DEBUG ] [Base ] Create provider from wm_touch
[DEBUG ] [Base ] Create provider from wm_pen
[INFO ] [Base ] Start application main loop
{'DoWorkResult': 'Working'}
http://localhost:9624/BasicServ.svc/auth/Authorize/admin/1234
[INFO ] [Base ] Leaving application in progress...
Traceback (most recent call last):
File "C:\Kivy180\Python33\lib\site-packages\requests-2.2.1-py3.3.egg\requests\packages\urllib3\connectionpool.py", line 313, in _make_request
httplib_response = conn.getresponse(buffering=True)
TypeError: getresponse() got an unexpected keyword argument 'buffering'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Kivy180\Python33\lib\site-packages\requests-2.2.1-py3.3.egg\requests\packages\urllib3\connectionpool.py", line 480, in urlopen
body=body, headers=headers)
File "C:\Kivy180\Python33\lib\site-packages\requests-2.2.1-py3.3.egg\requests\packages\urllib3\connectionpool.py", line 315, in _make_request
httplib_response = conn.getresponse()
File "C:\Kivy180\Python33\lib\http\client.py", line 1147, in getresponse
response.begin()
File "C:\Kivy180\Python33\lib\http\client.py", line 358, in begin
version, status, reason = self._read_status()
File "C:\Kivy180\Python33\lib\http\client.py", line 320, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "C:\Kivy180\Python33\lib\socket.py", line 297, in readinto
return self._sock.recv_into(b)
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Kivy180\Python33\lib\site-packages\requests-2.2.1-py3.3.egg\requests\adapters.py", line 330, in send
timeout=timeout
File "C:\Kivy180\Python33\lib\site-packages\requests-2.2.1-py3.3.egg\requests\packages\urllib3\connectionpool.py", line 530, in urlopen
raise MaxRetryError(self, url, e)
requests.packages.urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=9624): Max retries exceeded with url: /BasicServ.svc/auth/Authorize/admin/1234 (Caused by <class 'ConnectionResetError'>: [WinError 10054] An existing connection was forcibly closed by the remote host)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\OS Files\workspace\Assistant\main.py", line 10, in <module>
StartApp().run()
File "C:\Kivy180\kivy\kivy\app.py", line 792, in run
runTouchApp()
File "C:\Kivy180\kivy\kivy\base.py", line 481, in runTouchApp
EventLoop.window.mainloop()
File "C:\Kivy180\kivy\kivy\core\window\window_pygame.py", line 381, in mainloop
self._mainloop()
File "C:\Kivy180\kivy\kivy\core\window\window_pygame.py", line 287, in _mainloop
EventLoop.idle()
File "C:\Kivy180\kivy\kivy\base.py", line 324, in idle
self.dispatch_input()
File "C:\Kivy180\kivy\kivy\base.py", line 309, in dispatch_input
post_dispatch_input(*pop(0))
File "C:\Kivy180\kivy\kivy\base.py", line 220, in post_dispatch_input
listener.dispatch('on_motion', etype, me)
File "_event.pyx", line 316, in kivy._event.EventDispatcher.dispatch (kivy\_event.c:4537)
return handler(*largs)
File "C:\Kivy180\kivy\kivy\core\window\__init__.py", line 645, in on_motion
self.dispatch('on_touch_down', me)
File "_event.pyx", line 316, in kivy._event.EventDispatcher.dispatch (kivy\_event.c:4537)
return handler(*largs)
File "C:\Kivy180\kivy\kivy\core\window\__init__.py", line 657, in on_touch_down
if w.dispatch('on_touch_down', touch):
File "_event.pyx", line 316, in kivy._event.EventDispatcher.dispatch (kivy\_event.c:4537)
return handler(*largs)
File "C:\Kivy180\kivy\kivy\uix\widget.py", line 284, in on_touch_down
if child.dispatch('on_touch_down', touch):
File "_event.pyx", line 316, in kivy._event.EventDispatcher.dispatch (kivy\_event.c:4537)
return handler(*largs)
File "C:\Kivy180\kivy\kivy\uix\widget.py", line 284, in on_touch_down
if child.dispatch('on_touch_down', touch):
File "_event.pyx", line 316, in kivy._event.EventDispatcher.dispatch (kivy\_event.c:4537)
return handler(*largs)
File "C:\Kivy180\kivy\kivy\uix\behaviors.py", line 93, in on_touch_down
self.dispatch('on_press')
File "_event.pyx", line 312, in kivy._event.EventDispatcher.dispatch (kivy\_event.c:4491)
if handler(self, *largs):
File "C:\Kivy180\kivy\kivy\lang.py", line 1299, in custom_callback
exec(__kvlang__.co_value, idmap)
File "D:\OS Files\workspace\Assistant\start.kv", line 65, in <module>
on_press: root.Authorization(self,userid.text,password.text)
File "D:\OS Files\workspace\Assistant\forms.py", line 18, in Authorization
if self.loginclass.Authorization()== True:
File "D:\OS Files\workspace\Assistant\classes.py", line 8, in Authorization
return LoginAccess(self.userid, self.password)
File "D:\OS Files\workspace\Assistant\dbcodes.py", line 9, in LoginAccess
response = requests.get('http://localhost:9624/BasicServ.svc/auth/Authorize/'+userid+'/'+password,stream=False)
File "C:\Kivy180\Python33\lib\site-packages\requests-2.2.1-py3.3.egg\requests\api.py", line 55, in get
return request('get', url, **kwargs)
File "C:\Kivy180\Python33\lib\site-packages\requests-2.2.1-py3.3.egg\requests\api.py", line 44, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Kivy180\Python33\lib\site-packages\requests-2.2.1-py3.3.egg\requests\sessions.py", line 383, in request
resp = self.send(prep, **send_kwargs)
File "C:\Kivy180\Python33\lib\site-packages\requests-2.2.1-py3.3.egg\requests\sessions.py", line 486, in send
r = adapter.send(request, **kwargs)
File "C:\Kivy180\Python33\lib\site-packages\requests-2.2.1-py3.3.egg\requests\adapters.py", line 378, in send
raise ConnectionError(e)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=9624): Max retries exceeded with url: /BasicServ.svc/auth/Authorize/admin/1234 (Caused by <class 'ConnectionResetError'>: [WinError 10054] An existing connection was forcibly closed by the remote host)
My related wcf service code is :
<OperationContract()>
<WebGet(UriTemplate:="Authorize/{id}/{pw}", BodyStyle:=WebMessageBodyStyle.Wrapped, RequestFormat:=WebMessageFormat.Json, ResponseFormat:=WebMessageFormat.Json)>
Function Authorize(ByVal id As String, ByVal pw As String)
Function Authorize(ByVal id As String, ByVal pw As String) Implements IBasicServ.Authorize
Dim c As New List(Of Guid)
For i = 0 To 10
c.Add(Guid.NewGuid)
Next
Return c
End Function
The code in python client is :
import requests
import json
def LoginAccess(userid, password):
response = requests.get('http://localhost:9624/BasicServ.svc/auth/test/')
print (response.json())
print('http://localhost:9624/BasicServ.svc/auth/Authorize/'+userid+'/'+password)
response = requests.get('http://localhost:9624/BasicServ.svc/auth/Authorize/'+userid+'/'+password,stream=False)
print (response.json())
The first reponse is for testing service only, and it is working, the second one I am receiving the error. I would duly code for encryption and SSL, but currently trying to get that rest client working. I also tested with Stream= True and False, but the result is the same.
I googled on it and found that error would generally be related to requests module being old, but I am using updated one.
Requests module is 2.2.1 Python 3.3 with Kivy WCF on .net 4
EDIT: WCF Web Config File:
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" strict="false" explicit="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<services>
<service behaviorConfiguration="ServBehav" name="AssistantWcf.BasicServ">
<endpoint address="auth" behaviorConfiguration="EndBehav" binding="webHttpBinding" name="endpointname" contract="AssistantWcf.IBasicServ" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="EndBehav">
<webHttp/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="ServBehav">
<!-- To avoid disclosing metadata information, set the value below to false before deployment -->
<serviceMetadata httpGetEnabled="true" httpGetBinding="webHttpBinding" httpGetBindingConfiguration="" />
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<!--
To browse web app root directory during debugging, set the value below to true.
Set to false before deployment to avoid disclosing web app folder information.
-->
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>
You seem to be unfamiliar with Python 3. It introduced a new style of tracebacks so that you can best figure out which path through your code was taken so you can potentially find the source of the final exception. Let's examine your traceback:
The important thing here is the very last line: "During handling of the above exception, another exception occurred:". This indicates that
TypeError: getresponse() got an unexpected keyword argument 'buffering'
was not the source of the exception that stopped your program, but it was in fact being handled when a different exception occurred.You'll now notice that "During handling of the above exception, another exception occurred:" occurs a few more times in the output you pasted and the final trace ends with:
I've broken up this last line to be more readable (so it doesn't scroll off to the side). The exception you're seeing is caused by the server forcibly closing a connection that was open. I would normally expect to see this if you were using a
Session
object because that does connection pooling for you by default, but you're using the functional API which creates a newSession
object each time. This means that the server here is most likely misbehaving if this is happening repeatedly. The server is refusing to respond to your request and forcibly closing the connection that was made. While trying to read the response urllib3 receives theWinError
exception from which there is no good way to recover other than providing it's own exceptionConnectionResetError
. Requests then catches this and raises it's ownConnectionError
.The problem here does not seem to be requests, but instead a misbehaving server.
On a side note, having the username and password in a URL is a very bad idea. I would advise investigating using HTTP Digest Authentication, HTTP Basic Authentication, or implementing something more secure (like a token based authentication scheme).