Подтвердить что ты не робот

Сервер кометы Python

Я создаю веб-приложение, в котором есть канал в режиме реального времени (аналогично новостной ленте Facebook), который я хочу обновить с помощью механизма длительного опроса. Я понимаю, что с Python мои решения в значительной степени могут использовать Stackless (построение из своего примера Comet wsgi) или Cometd + Twisted. К сожалению, очень мало документации по этим параметрам, и я не могу найти хорошую информацию в Интернете о пользователях серийных комет на Python.

Кто-нибудь успешно реализовал комету на Python в производственной системе? Как вы это сделали и где я могу найти ресурсы для реализации своих собственных?

4b9b3361

Ответ 1

Я рекомендую вам использовать StreamHub Comet Server - его используют многие люди - лично я использую его на нескольких сайтах Django, которые я запускаю. Вам нужно будет написать немного Java для обработки потоковой передачи - я сделал это с помощью Jython. Код переднего плана - это настоящий простой Javascript:

StreamHub hub = new StreamHub();
hub.connect("http://myserver.com/");
hub.subscribe("newsfeed", function(sTopic, oData) { alert("new news item: " + oData.Title); });

Документация довольно хорошая - у меня были похожие проблемы, когда вы пытались начать работу с редкими документами Cometd et al. Для начала я прочитал " Приступая к работе с Comet" и "StreamHub", скачал и посмотрел, как работают некоторые примеры, и, если вам нужно, ссылается на документацию по API:

Ответ 2

Orbited кажется хорошим решением. Не пробовал, хотя.


Обновление: все изменилось за последние 2,5 года.

Теперь у нас есть websockets во всех основных браузерах, за исключением IE (естественно) и пара очень хороших абстракций над ним, которые предоставляют множество методов эмуляции обмена в реальном времени.

Ответ 3

Вот полнофункциональный пример объединения Django, Orbited и Twisted для создания приложения реального времени (Comet): http://github.com/clemesha/hotdot с помощью Python.

Ответ 4

Я использовал множество API, используя скрученные для подобных вещей, большинство из которых доступны на моей github.

Большинство из них на стороне клиента, но slosh - это сервер, который я написал, чтобы делать в режиме реального времени дешевый pubsub. Он масштабируется несколько горизонтально для чтения, позволяя простое репликации потока. Сценарий немного отличается, когда вы придерживаетесь простого HTTP, но я сделал для него приличную сумму для демонстрации.

В противном случае у вас есть полнофункциональный BOSH, который поддерживает большинство серверов XMPP, и позволит вам отделить распространение сообщений от веб-интерфейса.

Ответ 5

Я этого не делал, но этот парень имеет и пишет хорошую статью об этом, с примерами и указателями Django (которые я не проверены) на другие структуры.

Ответ 6

орбитальные и redis-решения хороши, но не более актуальны, если у вас есть что-то вроде PubSubHubbub, выпущенного google. Это позволяет легко быть издателем или подписчиком для данного фида. http://code.google.com/p/pubsubhubbub/