представь себе, что блокирующий io — это когда программа однопоточная. А неблокирующий — это когда программа с двумя потоками. В одном потоке происходят вычисления, а в другом — работа с io. И эти потоки взаимодействуют друг с другом через очереди сообщений.
Что такое блокирующий/неблокирующий i/o с точки зрения программы? Синхронные/асинхронные сокеты или что? под неблокирующим/блокирующим i/o можно многое подразумевать. Я не понимаю что имеешь в виду конкретно ты.
кстати, gevent — великолепная панацея, делает синхронные сокеты асинхронными, ты просто пишешь синхронный код, и он сам получается асинхронным. Только её нету под третий питон.
SleekXMPP, xmppy
они не асинхронные, я только что грепнул
Чем они не асинхронные?
Как раз наоборот: синхронных я не видел. Первый, кстати, как и твистед реализует FSM.
в них асинхронная модель, но io у них блокирующий
Хы. I/O не ковырял. С другой стороны, плохо ли это?
ну вообще-то плохо
Чем?
тем, что io блокирующий %) Ты ведь в курсе, что операции с io занимают куда больше времени, чем вычисления.
А ты в курсе, что стандартное сетевое устройство физически не может обрабатывать несколько i/o запросов одновременно?
разумеется, только ты сейчас на фразу "лучше иметь два бакса, чем один" задал вопрос "а ты в курсе, что в твой кошелёк не влезет миллион?"
То есть под блокирующим i/o ты подразумеваешь select вместо poll/epoll?
представь себе, что блокирующий io — это когда программа однопоточная. А неблокирующий — это когда программа с двумя потоками. В одном потоке происходят вычисления, а в другом — работа с io. И эти потоки взаимодействуют друг с другом через очереди сообщений.
Что такое блокирующий/неблокирующий i/o с точки зрения программы? Синхронные/асинхронные сокеты или что?
под неблокирующим/блокирующим i/o можно многое подразумевать. Я не понимаю что имеешь в виду конкретно ты.
да, синхронные/асинхронные сокеты
при этом не используя gevent
А что питоновые мануалы говорят? Не очень знаком с реализацией сего на питоне.
что модуль socket синхронный. Есть модуль asyncore, там асинхронные сокеты, но её нету в указанных тобой либах.
http://docs.python.org/library/asyncore....
да, в каких языках ты знаком с реализацией асинхронных сокетов, кроме эрланга?
И что они пишут про синхронные сокеты? Плохо масштабируются?
asyncore видел, но не пользовался: не было нужды.
Только на сях.
да ты опять издеваешься надо мной
Синхронные сокеты, временами, гораздо лучше асинхронных.
только когда лень разбираться с асинхронными. А большого трафика они не выдержат.
кстати, gevent — великолепная панацея, делает синхронные сокеты асинхронными, ты просто пишешь синхронный код, и он сам получается асинхронным. Только её нету под третий питон.
зависит от реализации же. Если они в бэкенде юзают epoll, то выдержат.
Зачем третий питон? Сырой он ещё.
то есть это асинхронность на уровне libc?
что ты подразумеваешь здесь под сыростью?
Что тебя так заело на асинхронности? Сокеты по дефолту синхронные.
А epoll реализован в ядре.
слушай, я спросил — есть ли асинхронный. А ты уже 30 комментов пытаешься убедить меня, что мне не нужна асинхронность.
Ну если она тебе действительно не нужна, что я поделаю?
А всё что есть и не уёбищно пиздец как, я перечислил.
Хочешь многопоточности?
ТОЛЬКО ERLANG! ТОЛЬКО ХАРДКОР!
хочу асинхронности
Всё равно только эрланг, только хардкор :)
Ты так и не нашел себе фреймворка-то?
кроме твистеда — нет ничего
А инициализировать новый велосипед на гитхабе? :)
я за пять лет его не сделаю
То есть тебе реально нужен целый фреймворк, а не небольшой костыль, позволяющий асинхронный XMPP?
вариант с gevent, конечно, имеет смысл