ОБНОВЛЕНИЕ: после долгой работы с Py3, в том числе написания моего собственного асинхронного веб-сервера (после презентации Дэйва Бизли), я наконец выбросил Python (и огромный стек моего кода) -: в пользу CoffeeScript, работающий на NodeJS. Проверьте это: GitHub (где в наши дни вы найдете около 95% всего интересного кода), npm (менеджер пакетов, который не может быть удобным для пользователя; избавление от дороги, easy_install
, вы никогда не оправдали своего имени), безумно огромный репозиторий модулей (с множеством новых материалов, публикуемых практически 24/7), огромное и яркое сообщество, асинхронный HTTP и обработка файлов ... и все такое (спасибо V8) на треть скорости света - что может не понравиться? прочитайте больше пропаганды: «Будущее сценариев» (предоставлено хостингом слайдов SpreeWebdesign).
есть интересная страница http://scotdoyle.com/python-epoll-howto.html о том, как выполнять асинхронное / неблокирующее / AIO http-обслуживание в python 3.
существует веб-сервер tornado, который включает неблокирующий http-клиент. мне удалось перенести части сервера на python 3.1, но для реализации клиента требуются pyCurl и < a href = "http://groups.google.com/group/python-tornado/browse_thread/thread/276059a076593266/c49e8f834497271e?lnk=gst&q=httpclient+trouble+with+epoll#c49e8f834497271e" nikea иметь проблемы (один участник заявил, что «Libcurl - это такая головная боль», и, глядя на невероятно уродливую страницу pyCurl, я сомневаюсь, что pyCurl появится в py3 + в ближайшее время).
Теперь, когда epoll доступен в стандартной библиотеке, должна появиться возможность выполнять асинхронные HTTP-запросы прямо из коробки с помощью python. я действительно не хочу использовать asyncore или еще много чего; epoll имеет репутацию идеального инструмента для решения этой задачи, и он является частью дистрибутива Python, поэтому использование чего-либо, кроме epoll для неблокирующего http, крайне нелогично (докажите, что я ошибаюсь, если вам это нравится).
о, и я чувствую, что резьба ужасна. нет резьбы. я использую stackless.
люди, которые интересуются темой асинхронного http, не должны пропустить это выступление Питера Портанте на PyCon2010; также представляет интерес основной доклад, в котором докладчик Антонио Родригес на один момент подчеркивает важность наличия современных библиотек веб-технологий прямо в стандартной библиотеке.
edit может быть много способов добиться высокой пропускной способности при небольшом потреблении ресурсов. однако не только я считаю, что отказ от потоков (и других, частично устаревших, методов); похоже, что люди из проекта google skipfish думают так же: они говорят, что skipfish использует
Мультиплексирование однопоточной, полностью асинхронной сетевой модели ввода-вывода и обработки данных, которая устраняет неэффективность управления памятью, планирования и IPC, присущую некоторым многопоточным клиентам.