Комментарии 9
Добавлю, что хотя Tornado внутри использует лапшу из callback'ов, некоторая поддержка сопрограмм (coroutine) там тоже есть: www.tornadoweb.org/en/stable/gen.html.
Поддержка сопрограмм (coroutine) в Tornado достаточно серьёзная. В двух небольших сервисах с успехом их использовал. Другое дело что конструкции с ними там более громоздкие получаются, чем в asyncio. Но это связано с тем, что до Python 3.3 нельзя было вернуть из генератора результат, как из обычной функции.
Было бы также интересно посмотреть бенчмарки в сравнении с gevent.
Для того чтобы бенчмарки были корректными нужно брать tornado+bottle. Потому что WSGI контекст для bottle будет потяжелее не-WSGI контекста tornado.
Торнадо+ботле будет наверняка меньше выдаст, чем даже waitres+ботле. WSGI у торнадо сделан просто для галочки. «Пациент» же изначально был задуман как WSGI сервер с поддержкой асинхронности.
Тот же Waitress в этом тесте запускался с дефолтными настройками, то есть — он запустил четыре дочерних процесса, по числу ядер на компе на котором тестировалось. Когда как «пациент» и торнадо были запущены в одном экземпляре процесса. То есть данные waitess можно смело поделить на четыре.
Если вы сейчас посмотрите мой гитхаб, то там добавилось новое демо. На флак приложении сделан чат, с почти мгновенной доставкой сообщений, использующий методику (патерн) long polling. И всё только Flask приложение запущенное под сервером aqua. Немного пришлось модифицировать Flask, но совсем чуть-чуть).
Тот же Waitress в этом тесте запускался с дефолтными настройками, то есть — он запустил четыре дочерних процесса, по числу ядер на компе на котором тестировалось. Когда как «пациент» и торнадо были запущены в одном экземпляре процесса. То есть данные waitess можно смело поделить на четыре.
Если вы сейчас посмотрите мой гитхаб, то там добавилось новое демо. На флак приложении сделан чат, с почти мгновенной доставкой сообщений, использующий методику (патерн) long polling. И всё только Flask приложение запущенное под сервером aqua. Немного пришлось модифицировать Flask, но совсем чуть-чуть).
На github.com/Alesh/aqua смотреть не на что, извините.
Возвращаясь к теме. Написал статью «почему нет http в asyncio»: asvetlov.blogspot.com/2014/04/wsgi.html
Возвращаясь к теме. Написал статью «почему нет http в asyncio»: asvetlov.blogspot.com/2014/04/wsgi.html
dev ветку не пробовали открыть? До мастер ветки пока я не готов выложить)
github.com/Alesh/aqua/tree/dev/demo/chat
github.com/Alesh/aqua/tree/dev/demo/chat
Блин, это залет. Все интересное в ветке dev; а я не дал на неё ссылку в тексте)
github.com/Alesh/aqua/tree/dev
github.com/Alesh/aqua/tree/dev
Андрей, в блог у вас что-то запись не кладется. Так и не понял отправил ли хабр мое послание вам. Свяжитесь со мной, HTTP сервер на asyncio можно сделать. Давайте обсудим это, потому что вижу вы тоже в теме.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Примеры использования asyncio: HTTPServer?!