Wie funktioniert zmq poller?
Ich bin verwirrt, was die poller tatsächlich in der zmq. Die zguide geht in minimal, und nur beschreibt es als eine Möglichkeit für das Lesen von mehreren sockets. Dies ist keine befriedigende Antwort für mich, weil es nicht zu erklären, wie timeout-buchsen. Ich weiß zeromq: wie Sie verhindern, dass unendliche warten? erklärt, für push/pull, aber nicht req/rep-Muster, die ist, was ich will zu wissen, wie zu bedienen.
Was ich bin versucht zu Fragen ist: Wie funktioniert poller arbeiten, und wie kann seine Funktion übernehmen, um zu halten verfolgen von Steckdosen und Ihre Wünsche?
InformationsquelleAutor der Frage user1876508 | 2013-08-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie Sie brauchen, zu hören auf verschiedenen Steckdosen im selben thread, verwenden Sie ein poller:
Registrieren Steckdosen mit poller (
POLLIN
lauscht für eingehende Nachrichten)Beim polling fragt eine Schleife verwenden:
Wählen, wie Sie wollen, um Abfragen...
poller.poll()
blockiert, bis Daten entweder auf der Buchse.poller.poll(1000)
Blöcke für 1s, dann mal zu.Den poller benachrichtigt, wenn die Daten (Nachrichten) auf die sockets; es ist dein job, es zu Lesen.
Beim Lesen, tun Sie es, ohne zu blockieren:
socket.recv( ZMQ.DONTWAIT)
. Obwohlpoller.pollin(0)
überprüft, ob es Daten zu Lesen, die Sie wollen, zu vermeiden, blockieren Telefonate innerhalb der polling-Schleife, sonst könnten Sie am Ende die Blockierung der poller durch "stecken" - Buchse.So, wenn zwei separate Nachrichten gesendet werden, um
subscriber
Sie berufensubscriber.recv()
zweimal, um klar die poller, die ansonsten, wenn Sie anrufensubscriber.recv()
einmal, die poller werden immer wieder sagen Sie, es ist eine andere Nachricht zu Lesen. Also, in Wesen, die poller tracks die Verfügbarkeit und die Anzahl der Nachrichten, nicht die eigentlichen Nachrichten.Führen Sie durch die polling-Beispiele und spielen Sie mit dem code, es ist der beste Weg, um zu lernen.
Nicht, dass die Antwort auf Ihre Frage?
InformationsquelleAutor der Antwort raffian