requests
requests copied to clipboard
Request not throwing requests.exceptions.InvalidSchema on custom HTTPAdapter
Mounting a custom HTTPAdapter (e.g. for retry) using an unsupported protocol (e.g. typo) doesn't throw requests.exceptions.InvalidSchema like the default adapter?!
Expected Result
Should throw requests.exceptions.InvalidSchema
Actual Result
Traceback (most recent call last):
File "C:\.res\binaries\python-3.9.13-embed-amd64\lib\site-packages\requests\adapters.py", line 456, in send
conn = self.get_connection(request.url, proxies)
File "C:\.res\binaries\python-3.9.13-embed-amd64\lib\site-packages\requests\adapters.py", line 358, in get_connection
conn = self.poolmanager.connection_from_url(url)
File "C:\.res\binaries\python-3.9.13-embed-amd64\lib\site-packages\urllib3\poolmanager.py", line 299, in connection_from_url
return self.connection_from_host(
File "C:\.res\binaries\python-3.9.13-embed-amd64\lib\site-packages\urllib3\poolmanager.py", line 246, in connection_from_host
return self.connection_from_context(request_context)
File "C:\.res\binaries\python-3.9.13-embed-amd64\lib\site-packages\urllib3\poolmanager.py", line 258, in connection_from_context
raise URLSchemeUnknown(scheme)
urllib3.exceptions.URLSchemeUnknown: Not supported URL scheme htxp
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\.res\git\python-iptvcat-crawler\_TEST\520.py", line 21, in <module>
with session.get(url.geturl()) as r:
File "C:\.res\binaries\python-3.9.13-embed-amd64\lib\site-packages\requests\sessions.py", line 600, in get
return self.request("GET", url, **kwargs)
File "C:\.res\binaries\python-3.9.13-embed-amd64\lib\site-packages\requests\sessions.py", line 587, in request
resp = self.send(prep, **send_kwargs)
File "C:\.res\binaries\python-3.9.13-embed-amd64\lib\site-packages\requests\sessions.py", line 701, in send
r = adapter.send(request, **kwargs)
File "C:\.res\binaries\python-3.9.13-embed-amd64\lib\site-packages\requests\adapters.py", line 458, in send
raise InvalidURL(e, request=request)
requests.exceptions.InvalidURL: Not supported URL scheme htxp
Reproduction Steps
from urllib.parse import urlparse
import requests
import urllib3
url = urlparse('htxp://example.com/test')
retries = requests.packages.urllib3.util.retry.Retry(
status_forcelist = tuple(range(500, 600))
)
adapter = requests.adapters.HTTPAdapter(max_retries = retries)
session = requests.Session()
session.mount('%s://' % (url.scheme), adapter)
try:
with session.get(url.geturl()) as r: # Should throw requests.exceptions.InvalidSchema
print(r.status_code)
except requests.exceptions.InvalidSchema as e: # Not thrown!
print(e)
except urllib3.exceptions.URLSchemeUnknown as e: # Instead this does but can't catch it?
print(e)
except requests.exceptions.InvalidURL as e: # Thrown by above exception
print(e)
System Information
$ python -m requests.help
{
"requests": {
"version": "2.28.1"
},
"urllib3": {
"version": "1.26.13"
}
}