python + асинхронные сокеты (выбор фреймворка)

Модератор: Модераторы разделов

Аватара пользователя
nadge
Сообщения: 1519
ОС: ArchLinux, Ubuntu 10.10

python + асинхронные сокеты

Сообщение nadge »

Преамбула
Есть программа, питон + Qt4. В определенное время (по нажатию кнопки) она должна соединиться с некоторым количеством (сотни) серверов по TCP, отправить им пару строк, потом получить ответ (строки, затем raw-данные) и закрыть соединение. Фактически все работает по протоколу HTTP/1.0. С сервером может не установиться соединение, сервер может принять соединение и "замолчать", т.е. ничего не ответить, удерживая соединение открытым и т.п. По произвольному таймауту (это обязательно) все соединения должны закрыться, их объекты передаться на "съедение" сборщику мусора. Если работа будет выполнена ранее таймаута, то программа не должна его не дожидаться.


Нужен фреймворк для удобного использования асинхронных сокетов. Обязательна поддержка произвольных таймаутов на случай "замолкания" сервера


Я пробовал (написал рабочие прототипы) asyncore (худо бедно годится, но страшно грузит проц непонятно почему) и twisted (но под него надо всю логику программы переделывать, да и таскать такого монстра ради такой простой задачи не хочется). В обоих, похоже, нет адекватной поддержки таймаутов, приходится прикручивать костыли. Мне главное чтобы мне как разработчику было комфортно (т.е. код писался быстро и легко, было легко поддерживать), ну и чтобы эта штука не тормозила.
Спасибо сказали: