Unexpected keyword argument "buffering" - python client

I get the error: "getresponse () received an unexpected keyword argument 'buffering'". Complete error log:

[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 wcf related service code:

<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

      

Code in python client:

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 answer is just for testing the service and it works, the second is I get an error. I would code appropriately for encryption and SSL, but am currently trying to get this client to rest. I also tested with Stream = True and False but the result is the same.

I searched for it and found that the error is usually due to the request module being old, but I'm using the updated one.

Query Module - 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>

      

+3


source to share


1 answer


It looks like you are not familiar with Python 3. It introduced a new style of tracing so you can better understand which path was taken through your code so that you can find the source of the final exception. Let's take a look at your trace:

 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 is the last line: "While handling the above exception, another exception occurred:". This means it was TypeError: getresponse() got an unexpected keyword argument 'buffering'

not the source of the exception that stopped your program, but in fact it was being handled when another exception was thrown.

Now you will notice that "while handling the above exception, another exception occurred:" occurs a few more times in the output you drew, 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 have stripped this last line so it can be read (so it doesn't scroll to the side). The exception you are seeing is caused by the server forcibly closing the open connection. I usually expect to see this if you are using an object Session

, because the default is connection pooling, but you are using a functional API that creates a new object every time Session

. This means that the server is most likely mistaken here if it happens repeatedly. The server refuses to respond to your request and forcibly close the connection that was made. When trying to read the response urllib3 gets an exception WinError

, from which there is no good way to recover other than giving it its own exceptionConnectionResetError

... Queries then grab it and bring it up of its own ConnectionError

.

The problem here is not the request, but the wrong server instead.


On the other hand, having a username and password in a URL is a very bad idea . I would suggest investigating using HTTP Digest Authentication, HTTP Basic Authentication, or implementing something more secure (like a token based authentication scheme).

+7


source







All Articles