делает ли pyll urllib2 пул соединений? - PullRequest
1 голос
/ 29 сентября 2011

Действительно, что мне интересно: urllib2 в python больше похож на HttpUrlConnection java или больше похож на HttpClient apache?И, в конечном счете, мне интересно, масштабируется ли urllib2 при использовании на http-сервере, или есть какая-то альтернативная библиотека, которая используется, когда производительность является проблемой (как в случае с Java).

Длянемного расширим мой вопрос:

Java HttpUrlConnection внутренне удерживает одно открытое соединение на хост и выполняет конвейерную обработку.Таким образом, если вы выполните следующее одновременно для всех потоков, это не будет работать хорошо:

HttpUrlConnection cxn = new Url('www.google.com').openConnection();
InputStream is = cxn.getInputStream();

Для сравнения, HttpClient apache можно инициализировать с помощью пула соединений, например:Важной частью в приведенном выше примере является то, что количество общих подключений и подключений на хост настраивается.

В комментарии упоминался urllib3, но я не могу понять из чтения документации, позволяет ли он устанавливать максимальный уровень для каждого хоста.

1 Ответ

0 голосов
/ 07 декабря 2018

Начиная с Python 2.7.14rc1, №

Для urllib, urlopen() в конечном итоге вызывает httplib.HTTP, что создает новый экземпляр изHTTPConnection.HTTPConnection привязан к сокету и имеет методы для его открытия и закрытия.

Для urllib2, HTTPHandler делает нечто подобное и создает новый экземпляр HTTPConnection.

...