4

requests.Session()에 마운트하는 과정에서 비동기 호출 (같은 호스트, 즉 동일한 연결 풀에 속함)을 각 배치 크기가 최대 값보다 큰 배치로 발행했기 때문에 연결이 결국 폐기되는 문제가 발생했습니다 풀 크기. 솔루션은 물론 최대 풀 크기를 늘리는 것이 었습니다.Python 'requests'모듈의 연결 풀 크기를 매우 크게 만드는 단점은 무엇입니까?

더 큰 배치 크기 (더 큰 최대 풀 크기)를 반복하는 것보다 작은 배치 크기 (더 작은 풀 크기)를 반복하는 것 사이의 절충점은 무엇인지 알고 싶습니다. 하나의 배치 요청에서 풀 크기를 무한대로 확장하고 모든 비동기 호출 (동일한 풀에 속함)을 발행하는 것은 무엇이 문제입니까?

+0

요청과 함께 비동기 호출을 실행하는 코드를 표시 할 수 있습니까? – georgexsh

답변

1

requests.adaptersHTTPAdapter에서 연결 풀 설정이 urllib3's PoolManager으로 직접 전달 될 가능성이 큽니다.

더 많은 연결을 허용하도록 ConnectionPool의 크기를 조정해도 문제가 없습니다. 그러나 고려해야 할 단점이 있습니다 ... 호스트가 요청에 응답 할 수있는 용량입니다. 내 경험상, 이것이 실제 병목 현상이 될 것입니다. 사실, 위의 urllib3 링크 참조 : 그러나

지정할 경우 블록 = 사실 대부분이 특정 호스트에 열려 연결을 maxsize와에 다음이있을 수 있습니다. 새로운 요청은 풀에서 연결을 사용할 수있을 때까지 을 차단합니다. 이것은 멀티 스레드의 응용 프로그램에서 너무 많은 연결로 호스트 플러딩을 방지하는 좋은 방법입니다.