Frage

Ich bin den Aufbau einer Web-Anwendung, die eine Echtzeit-Feed (ähnlich Facebook-Newsfeed) hat, die ich über einen langfris Polling-Mechanismus aktualisiert werden soll. Ich verstehe, dass mit Python, meine Entscheidungen so ziemlich verwenden entweder Stackless (Gebäude aus dem Comet wsgi Beispiel) oder Cometd + Verdrehte. Leider gibt es nur sehr wenig Dokumentation dieser Optionen in Bezug auf, und ich kann nicht gut Informationen online über Produktionsmaßstab Benutzer des Kometen auf Python finden.

Hat jemand erfolgreich Kometen auf Python in einem Produktionssystem implementiert? Wie haben Sie es zu tun und wo kann ich Ressourcen finden, um meine eigene zu implementieren?

War es hilfreich?

Lösung

Ich empfehle sollten Sie StreamHub Comet Server verwenden - seine von vielen Menschen genutzt - persönlich verwende ich es mit ein paar Django Seiten, die ich laufen. Sie benötigen ein winzig bisschen Java zu schreiben, das Streaming zu handhaben - ich habe dies mit Jython . Der Front-End-Code ist einige echte einfache Javascript a la:

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

Die Dokumentation ist ziemlich gut - ich hatte ähnliche Probleme, wie Sie mit der spärlichen docs von Cometd et al loszulegen versuchen. Für den Anfang würde ich lesen Erste Schritte mit Comet Gestartet und StreamHub , herunterladen und sehen, wie einige der Beispiele arbeiten und die API-Dokumentation verweisen, wenn Sie benötigen:

Andere Tipps

umkreiste scheint als eine schöne Lösung. Habe es nicht, obwohl versucht.


Update . Dinge haben sich in den letzten 2,5 Jahren verändert

Wir haben jetzt WebSockets in allen gängigen Browsern, außer IE (natürlich) und ein paar sehr gute Abstraktionen über es, die Kommunikation in Echtzeit emulieren viele Methoden zur Verfügung stellen.

Hier ist ein voll funktionsfähiges Beispiel für die Kombination von Django, umkreiste und Twisted-Echtzeit (Comet) App zu erstellen:

Ich habe getan, Tonnen von APIs verdrehten mit für solche Sachen, von denen die meisten auf meine Github Konto.

Die meisten sind clientseitige, aber Schwappen ist ein Server Ich schrieb ein Realtime billig PubSub zu tun Art der Sache. Er skaliert etwas horizontal indem sie für eine einfache Replikation Strom liest. Writes sind ein wenig anders, wenn Sie in einfachen HTTP-Stick, aber ich habe einen angemessenen Betrag durch sie für eine Demo gedrückt wird.

Ansonsten haben Sie voll-auf BOSH die meist XMPP-Server-Unterstützung und ermöglichen es Ihnen, die Nachrichtenverteilung von dem Web-Frontend zu entkoppeln.

Ich habe es nicht getan, aber diesen Kerl hat und schreibt einen guten Artikel darüber, mit Django Beispiele und Zeiger (die ich nicht überprüft haben) zu einem anderen Rahmen.

die umkreiste und redis Lösungen sind nett, aber nicht mehr relevant, wenn Sie so etwas wie die PubSubHubbub haben, die Google veröffentlicht. Dies macht es sehr einfach, der Verleger oder die Teilnehmer zu einem bestimmten Feed zu sein. http://code.google.com/p/pubsubhubbub/

Hier ist ein Beispiel, das tut lang~~POS=TRUNC Polling mit GEVENT und Django .

Es verwendet Greenlet -. Stapel Switching-Funktionalität von Stackless als CPython Verlängerungs verpackt

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top