Urllib и параллелизм - Python - PullRequest
4 голосов
/ 23 апреля 2010

Я обслуживаю скрипт на Python через WSGI .Сценарий обращается к веб-ресурсу через urllib , вычисляет ресурс и затем возвращает значение.

Проблема состоит в том, что urllib, похоже, не обрабатывает много одновременных запросов к конкретному URL.

Как только количество запросов возрастает до 30 одновременных запросов, запросы замедляются до сканирования!: (


Помощь будет высоко ценится!: D

1 Ответ

3 голосов
/ 23 апреля 2010

Да, urllib не делает много параллелизма. Каждый раз, когда вы urlopen, он должен установить соединение, отправить HTTP-запрос и получить код состояния и заголовки из ответа (и, возможно, обработать перенаправление оттуда). Таким образом, хотя вы можете прочитать текст ответа в своем собственном темпе, большая часть времени ожидания запроса уже произошла.

Если вам нужно больше параллелизма, вам, вероятно, придется выбрать какой-нибудь инструмент асинхронного сетевого ввода-вывода (например, Eventlet , кажется, имеет подходящий пример на первой странице), или просто запустить каждый urlopen в собственной теме.

...