为什么在PoolManager执行时HTTPSConnectionPool不起作用?

时间:2014-06-11 10:10:21

标签: python urllib3

我已经使用PoolManager和HTTPSConnectionPool测试了一个'POST'请求。第一个工作,另一个给我一个:

urllib3.exceptions.MaxRetryError: 
HTTPSConnectionPool(host='https://some.url.com', port=443): 
Max retries exceeded with url: /some-api (Caused by <class 'socket.gaierror'>:
[Errno -2] Name or service not known)

这是我的PoolManager代码:

import urllib3

HOST = 'https://some.url.com'
PORT = 443
PATH = '/some-api'
xml_request = '<some xml tree/>'

manager = urllib3.PoolManager()
res = manager.request('POST', HOST+PATH, {'req':xml_request})

和HTTPSConnectonPool:

manager = urllib3.HTTPSConnectionPool(HOST, port=PORT)
res = manager.request('POST', PATH, {'req':xml_request})

1 个答案:

答案 0 :(得分:4)

https://some.url.com不是主机名或IP地址,而是URL。因此,您将错误的信息提供给HTTPSConnectionPool

此外,PoolManagerHTTPSConnectionPool不在同一抽象级别。 PoolManager为您管理ConnectionPool个实例。