Варианты веб-сервера Python с неблокирующей архитектурой

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

Пока я нашел 2 варианта в стране питонов.

Вне python есть, конечно, node.js, но я бы предпочел среду кодирования python, если это возможно.

Какой из двух вышеперечисленных (или других, которых я не знаю) вы бы порекомендовали? Какие плюсы-минусы? Или я должен создать свой собственный фреймворк, написав какой-нибудь неблокирующий интерфейс для web.py?

Меня беспокоит то, что хотя оба вышеупомянутых проекта, кажется, имеют хорошую поддержку сообщества, они не так популярны, как Django, CherryPy, Pylon и т. д. Поэтому я боюсь сделать выбор, который может закончиться плохой поддержкой в ​​будущем.


person Jayesh    schedule 06.05.2011    source источник


Ответы (2)


Есть еще хорошие варианты. Вам следует ознакомиться с очень хорошим обзором асинхронных серверов Python Николаса Пила.

person abbot    schedule 06.05.2011
comment
Хотя я приветствую усилия Николаса по составлению этого обзора, результаты его производительности крайне смещены в сторону конкретной, крайне нереалистичной рабочей нагрузки. Конечно, я вдвойне недоволен тем, что эта конкретная рабочая нагрузка особенно плохо относится к Twisted, но я не вижу ничего, что мы могли бы сделать, чтобы улучшить нашу производительность в этом тесте, но не снизить производительность в других, более реалистичных случаях (например, например, ответы, которые не помещаются в один вызов write() или даже в один сегмент TCP). - person Glyph; 07.05.2011
comment
(Я также должен отметить, что на самом деле он не измеряет какие-либо асинхронные веб-запросы; каждый сервер просто отвечает, записывая статическую строку, так что это показатель чистой задержки ввода-вывода, а не HTTP-запроса. обработка в любом из этих фреймворков.) - person Glyph; 07.05.2011
comment
@Glyph: У вас есть данные о производительности, чтобы представить Twisted в более выгодном свете? Я использую Twisted в проекте и хотел бы увидеть обе стороны этой истории. - person Aaron; 22.06.2015

Как один из основных разработчиков Twisted, я настоятельно рекомендую вам использовать Twisted. :)

Во-первых, потому что это отличная библиотека с командой разработчиков, приверженной высококачественному программному обеспечению. Twisted предлагает чрезвычайно широкий спектр функций, начиная от (хорошо работает) простой веб-сервер для интеграции с базой данных (либо на основе потоков на основе Twisted самостоятельно или без потоков в txmysql или txpostgres, распространяется отдельно) для поддержки других протоколов, таких как FTP, DNS, XMPP, SMTP и многих-многих других. Да, даже WebSockets.

Во-вторых, потому что это такое же хорошее решение для крупномасштабных сетевых серверов, какое вы найдете в Python. Поскольку вы знакомы с C10K, я не думаю, что мне нужно подробно об этом рассказывать. Достаточно сказать, что Twisted неоднократно использовался в крупномасштабные системы для обработки огромное количество подключений.

В-третьих, потому что существует большое активное сообщество, которое не исчезнет в ближайшее время и которое предлагает множество вариантов поддержки. Принимая во внимание список рассылки, IRC-канал и stackoverflow, у вас нет недостатка в способах получить помощь.

person Community    schedule 06.05.2011