Вопрос

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

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

Это было полезно?

Решение

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

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

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

Другие советы

Находящийся на орбите кажется, это хорошее решение.Хотя я этого еще не пробовал.


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

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

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

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

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

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

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

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

Вот пример, который выполняет длительный опрос с помощью gevent и Django.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top