Python Comet Server - PullRequest
       14

Python Comet Server

31 голосов
/ 07 июня 2009

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

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

Ответы [ 7 ]

13 голосов
/ 01 августа 2009

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


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

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

9 голосов
/ 21 августа 2009

Я рекомендую вам использовать 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:

6 голосов
/ 06 ноября 2009

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

4 голосов
/ 07 июня 2009

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

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

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

2 голосов
/ 07 июня 2009

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

1 голос
/ 10 апреля 2010

Вот пример, который делает длинный опрос с Gevent и Django .

Используется greenlet - функция переключения стека из Stackless, упакованная как расширение CPython.

1 голос
/ 20 февраля 2010

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

...