Многим нравится Витая . Некоторое время я был большим поклонником, но, немного поработав с ним и подумав об этом, я разочаровался. Это сложно, и в прошлом я смотрел, во многих из них предполагалось, что ваша программа всегда сможет отправлять данные, что приводит к возможным ситуациям, в которых ваша программа постоянно использует память, постоянно буферизуя данные для отправки, которые не не поднята удаленной стороной или недостаточно быстро.
На мой взгляд, это во многом зависит от того, какое сетевое программирование вы хотите делать. Много раз вы действительно не заботитесь о том, чтобы что-то сделать, пока вы ждете ввода-вывода. HTTP, например, очень ориентирован на запрос-ответ, и если вы говорите только с одним сервером, нет особых оснований для того, чтобы использовать что-то вроде Twisted и простых сокетов или встроенные библиотеки Python HTTP будут работать нормально.
Если вы пишете какой-либо сервер, вам почти наверняка нужно ориентироваться на события. У Twisted есть небольшое преимущество, но оно все еще кажется мне слишком сложным. Например, Bittorrent был написан на Python и совсем не использует Twisted.
Еще один фактор, поддерживающий Twisted, заключается в том, что для него уже написан код для многих протоколов. Поэтому, если вы хотите говорить по существующему протоколу, возможно, для вас уже проделана большая тяжелая работа.