2013-05-19 11 views
5

Ich benutze autobahn, um einen Websocket-Server zu betreiben, der meine Django-App ergänzt. Manchmal muss ich Nachrichten von Django an den Websocket-Server senden, was mit dem Modulfunktioniert. Ich würde lieber das WAMP-Protokoll verwenden, weil die RPC/PubSub-API gut aussieht, aber der Python-Client-Code ist als verdrehtes Protokoll implementiert, und ich kann nicht herausfinden, wie man das zwingend verwendet, dh wie ein Funktionsaufruf und nicht von einer ausländischen Ereignisschleife. Gibt es etwas, was ich nicht in den Dokumenten sehe, oder sollte meine Architektur anders sein?Imperativer Client für Autobahn-WAMP-Server?

+2

Alles in Python ist zwingend erforderlich. Ich denke du meinst "blockierend" oder vielleicht "synchron". –

+0

In Bezug auf die Architektur gibt es (mindestens) 2 Möglichkeiten: a) Autobahn als separaten Server zu betreiben und auf diesen als Client von Django zuzugreifen. b) Django und Autobahn (Server) innerhalb von 1 Prozess laufen lassen. Es gibt ein Beispiel dafür b) mit Flask and Autobahn hier zu tun https://github.com/tavendo/AutobahnPython/blob/master/examples/websocket/echo_wsgi/server.py – oberstet

+0

@ Jean-PaulCalderone: Du hast recht, ich möchte einen synchronen, blockierenden Anruf. – Simon

Antwort

5

https://github.com/itamarst/crochet könnte Ihnen dabei helfen.

+0

Das sieht sehr vielversprechend aus, danke :-) – Simon

+0

Interessant. Und ja, mit dieser Lib scheint es, als könntest du tun, was du willst: renne Autobahn (Client) in deiner App, aber blockiere (von deiner App POV). – oberstet

+0

Ist es nicht möglich, den WAMP-Client zu instanziieren und zu verwenden, ohne eine Ereignisschleife auszuführen? Oder müsste dazu zusätzlich zu den Twisted & Asyncio-Implementierungen eine vollständige "Eventloop-less" -Implementierung erstellt werden? – Petri