ОБНОВЛЕНИЕ: после долгой работы с Py3, включая написание моего собственного асинхронного веб-сервера (после презентации, представленной Дейвом Бизли), я, наконец, выбросил Python (и огромный стек моего кода) -: в пользу CoffeeScript работает на NodeJS . Проверьте это: GitHub (где вы найдете около 95% всего интересного кода в наши дни), npm (менеджер пакетов, который не может быть удобным для пользователя; хорошее избавление, easy_install
, вы никогда не соответствовали своему имени), безумно огромное хранилище модулей (с огромным количеством новых материалов, публикуемых практически круглосуточно), огромное и динамичное сообщество, готовые асинхронные HTTP и обработка файлов ... все это (благодаря V8 ) при одной трети скорости света - что не нравится? читать дальше пропаганда: «Будущее сценариев» (хостинг слайдов SpreeWebdesign ).
есть интересная страница http://scotdoyle.com/python-epoll-howto.html о том, как выполнять асинхронное / неблокирующее / AIO http обслуживание в python 3.
существует веб-сервер tornado , который включает неблокирующий http-клиент. мне удалось портировать части сервера на python 3.1, но реализация клиента требует pyCurl и , похоже, есть проблемы (с одним участником, заявляющим, что «Libcurl такая боль» и, глядя на невероятно некрасивую страницу pyCurl, сомневаюсь, что pyCurl появится в py3 + в ближайшее время).
теперь, когда epoll доступен в стандартной библиотеке, должна быть возможность выполнять асинхронные http-запросы из коробки с python. я действительно не хочу использовать asyncore или еще много чего; epoll имеет репутацию идеального инструмента для выполнения этой задачи, и он является частью дистрибутива python, поэтому использование чего-либо, кроме epoll для неблокирующей http, крайне нелогично (докажите, что я не прав, если вам так хочется).
о, и я чувствую, что нить ужасна. нет потоков. я использую без стеков .
люди, заинтересованные в теме асинхронного http, не должны пропустить этот доклад Питера Портанте на PyCon2010 ; также представляет интерес ключевая нота , где спикер Антонио Родригес в какой-то момент подчеркивает важность наличия современных библиотек веб-технологий прямо в стандартной библиотеке.
edit может быть много способов достижения высокой пропускной способности при небольшом потреблении ресурсов. однако, это не только я, кто думает, что отказываются от потоков (и других, частично устаревших, методов); люди из проекта gip skipfish , похоже, думают так же: они говорят, что skipfish использует
Мультиплексирование однопоточное, полностью
асинхронный сетевой ввод / вывод и данные
модель обработки, которая устраняет
управление памятью, планирование и IPC
неэффективность присутствует в некоторых
многопоточные клиенты.