2014-06-11 1 views
2

나는 PoolManager와 HTTPSConnectionPool 모두와 'POST'요청을 테스트했습니다.PoolManager에서 HTTPSConnectionPool이 작동하지 않는 이유는 무엇입니까?

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에 대한 :

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 내 코드입니다 :

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

나는 프로그래밍 질문으로 이것을보기 위해 사투를 벌인거야. – MattH

답변

2

https://some.url.com 호스트 이름 또는 IP 주소가 아닌 첫 번째는 다른 하나는 나에게 던져 작동 , 그것은 URL입니다. 따라서 잘못된 정보를 HTTPSConnectionPool에게 보냈습니다.

또한 PoolManagerHTTPSConnectionPool과 동일한 추상화 레벨이 아니다. PoolManagerConnectionPool 인스턴스를 관리합니다.

+0

팁 주셔서 감사! 나는 그것들이 다르다는 것을 알고있다. 그래서 나는 HTTPSConnectionPool을 먼저 시도했다 (나는 많은 풀을 관리 할 필요가 없다). – Yann

+0

이 좋은 대답은 우리가 (some.url.com''에'HOST'을 변경하면'HTTPS없이 제대로 작동해야 얀의 원래 질문 @, 아니 단점으로이 경우에 PoolManager를 사용하는 것이 안전하지만//'). – shazow

+0

@shazow 이것은 내 첫 문장에서 암시 한 것입니다. – MattH

관련 문제