Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

unexpected keyword argument 'buffering' - python client

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>
like image 535
surpavan Avatar asked Aug 15 '14 12:08

surpavan


1 Answers

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:

 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:

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:

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)

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 new Session 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 the WinError exception from which there is no good way to recover other than providing it's own exception ConnectionResetError. Requests then catches this and raises it's own ConnectionError.

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).

like image 157
Ian Stapleton Cordasco Avatar answered Oct 29 '22 09:10

Ian Stapleton Cordasco