Выбор и развертывание кометного сервера
Я хочу передать данные в браузер через HTTP, не убивая приложение django/python.
Я решил использовать кометный сервер, прокси-запросы между моим приложением и клиентом (хотя я до сих пор не понял его правильно).
Я рассмотрел следующие механизмы:
вращался
cometd
ejabberd
причал
У кого-нибудь есть опыт работы с этими серверами и их развертывание? Любое понимание и ссылки на темы были бы замечательными. Спасибо.
Ответы
Ответ 1
Я бы порекомендовал посмотреть на Twisted, их сервер twisted.web и работу кометы, выполненную поверх нее на Divmod. Они могут обрабатывать гораздо более параллельные соединения, чем традиционные потоковые или серверы на основе процессов, что именно то, что вам нужно для чего-то подобного. И, да, у меня есть архивированные системы, использующие Twisted для контента COMET, в то время как другие вещи используются для более передних веб-приложений рядом с ним. Это хорошо работает, и каждая часть делает то, что делает лучше всего.
Ответ 2
Мне нужно сделать что-то очень похожее. Я нашел это, но у меня не было времени, чтобы посмотреть на него должным образом:
django_evserver - простой HTTP-сервер для приложений Django. Он основан на библиотека libevent. Основное преимущество django_evserver заключается в том, что он обеспечивает методы вытеснения представлений джанго. Вы можете отобразить сайт в нескольких куски, каждый из них может обрабатываться другой вид django.
Используя эту идею, можно использовать django_evserver как кометный сервер для django.
http://code.google.com/p/django-evserver/
Ответ 3
Если вы можете запускать Java, я бы рекомендовал StreamCub Comet Server.
Во-первых, учитывая, что вам не нужно "убивать" существующее приложение, JavaScript-код имеет очень низкий размер при менее чем 10K. Я использую его для подталкивания пользовательских обновлений и чата на сайт социальной сети, который я создаю. Я тестировал с 1000 + хитами в день и не было заметного влияния на процессор.
Во-вторых, при развертывании я следил за некоторыми примерами и работал очень быстро по сравнению с ударом головой о стену с помощью CometD. Существует хорошее Comet Hello World начало руководство и Google Group, если вы застряли на чем-либо.
Ответ 4
Один из вариантов - Netty, инфраструктура сокетов клиент-сервер, основанная на Java NIO от JBoss. Для сравнения и обсуждения см. Здесь. Сообщается, что он обрабатывает 100000 одновременных открытых соединений на четырехъядерном сервере.
Ответ 5
Если вы используете IIS, вы можете проверить WebSync (http://www.frozenmountain.com/websync), совместимый со стандартами (байе) кометный сервер и клиент для .NET/IIS. Если вам не нужна дополнительная нагрузка, версия On-Demand является опцией SaaS, которая разгружает тяжелый подъем.
Ответ 6
Если вы хотите объединить Django с сервером Comet (Orbited), проверьте этот проект, который я собираюсь интегрировать Django и Orbited в качестве "чистого" и "реального мира", как это возможно: http://github.com/clemesha/hotdot
В проекте рассматриваются "реальные" проблемы, такие как безопасность и протоколирование/фильтрация/изменение сообщений в кометах в пути и т.д., но все еще продолжается.