2011-05-06 2 views
2

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

До сих пор я нашел 2 варианта на земле python.

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

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

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

ответ

3

Есть более хорошие варианты. Вы должны проверить very good review of asynchronous python servers Николя Пиля.

+2

Хотя я приветствую усилия Николаса в составлении этого обзора, его результаты работы чрезвычайно предвзяты к конкретной, крайне нереалистичной рабочей нагрузке. Конечно, я вдвойне недоволен тем, что эта конкретная рабочая нагрузка особенно сильно связана с Twisted, но не так много, что я мог бы видеть, что мы могли бы сделать, чтобы улучшить нашу производительность в этом тесте, но не танковать производительность других, более реалистичных случаев (например, например, ответы, которые не подходят ни одному вызову write(), или даже одному сегменту TCP). – Glyph

+1

(Я должен также отметить, что он фактически не тестирует любые асинхронные * веб-запросы *, каждый сервер просто отвечает, записывая статическую строку, поэтому это показатель чистой задержки ввода-вывода, а не обработка запросов HTTP в любом из эти рамки.) – Glyph

+0

@Glyph: У вас есть данные о производительности, чтобы поместить Twisted в более благоприятный свет? Я использую Twisted в проекте и хотел бы видеть обе стороны истории. – Aaron

4

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

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

Во-вторых, поскольку это столь же хорошо подходит для крупных сетевых серверов, как вы найдете в Python. Поскольку вы знакомы с C10K, я не думаю, что мне нужно подробно рассказать об этом. Достаточно сказать, что Twisted has been used несколько раз в large scale systems для обработки huge numbers of connections.

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

Смежные вопросы