hyper
hyper copied to clipboard
HTTP20Adapter object has no attribute 'poolmanager'
Using HTTP20Adapter
with requests
and closing the session (with context manager) results in attribute error.
Usage:
with requests.Session() as session:
session.mount(current_app.config['APNS_SERVER'], hyper.contrib.HTTP20Adapter())
response = session.post(...)
response.raise_for_status()
Error:
118 print(response.request.headers)
119 else:
--> 120 print(response.headers[b'apns-id'])
121
122 # try:
blaze/.venv/lib/python3.5/site-packages/requests/sessions.py in __exit__(self, *args)
367
368 def __exit__(self, *args):
--> 369 self.close()
370
371 def prepare_request(self, request):
blaze/.venv/lib/python3.5/site-packages/requests/sessions.py in close(self)
688 """Closes all adapters and as such the session"""
689 for v in self.adapters.values():
--> 690 v.close()
691
692 def mount(self, prefix, adapter):
blaze/.venv/lib/python3.5/site-packages/requests/adapters.py in close(self)
304 which closes any pooled connections.
305 """
--> 306 self.poolmanager.clear()
307 for proxy in self.proxy_manager.values():
308 proxy.clear()
AttributeError: 'HTTP20Adapter' object has no attribute 'poolmanager'
Packages:
h2 (2.6.0.dev0)
hpack (2.3.0)
hyper (0.7.0)
hyperframe (3.2.0)
requests (2.12.1)
Thanks for raising this! This is a bug caused by the fact that I didn't override the close
method of the HTTPAdapter
. It would be fixed by overriding HTTP20Adapter.close
with the appropriate functionality (in this case, iterating the connections and closing them all).
This is not a high urgency issue for me right now (I'm working on a few big bits of functionality that aren't easily interrupted for this), so while I may get to it eventually if someone wants to come along and make a pull request that will address this I'll happily review and merge.