zmq senden mit NOBLOCK erhöhen Ressource vorübergehend nicht verfügbar
Dieser code wird erhöhen Ressource vorübergehend nicht verfügbar, wenn der Anruf mit NOBLOCK:
context = zmq.Context()
sender = context.socket(zmq.PUSH)
sender.bind('tcp://*:15556')
sender.send('KeEpAliv', zmq.NOBLOCK) # this line will throw exception
#sender.send('KeEpAliv') # this line will ok
Nach Lesen der docs, fand ich keine Hinweise. aber docs für recv erklärt dieses flag.
InformationsquelleAutor schemacs | 2014-02-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Python-Wrapper erhöhen
zmq.error.Again
wenn die zugrunde liegenden C-API zurückEAGAIN
.Nun, Sie Folgen sollten, um zmq_send Dokumentation, die besagt:
Auch im Abschnitt Fehler:
Nun, warum ist es nicht möglich, jede Nachricht zu senden? Auf der Seite der Beschreibung PUSH/PULL-buchsen Lesen wir Folgendes über die
PUSH
sockel:Vor jedem peer eine Verbindung zu Ihrem sockel es nirgends um die Nachrichten zu senden, und es gibt keine Warteschlange. Also nur 2 Sachen sind möglich:
send()
im blockierenden Modus, blockiert Sie, bis ein peer verbindetsend()
im nicht-blockierenden Modus, die Sie aufwirftzmq.error.Again
Sie darüber informieren, dass es gibt nichts, was getan werden könnte, mit der Nachricht, und Sie sollten versuchen Sie es später erneut.Beachten Sie, dass Sie können auch diese Ausnahme aus, wenn der Warteschlangen für jeden der angeschlossenen Kollegen sind voll (
PUSH
socket erstellt eine separate Warteschlange für jedes angeschlossene peer).send() in non-blocking mode, it raises zmq.error.Again
.also, verstehe ich richtig, dass der einzige Weg, um solche "dynamische Warteschlange", wenn die pusher können, senden viele Nachrichten, bevor irgendwelche Abzieher verbunden sind, ist über einen queue-Gerät? oder "streamer" - Gerät? In der Tat, ich habe versucht die Warteschlange Gerät (mit PUSH-PULL-buchsen auf beiden Seiten), funktioniert es. Nur vom Lesen der O'Reily Buch, das ich erwartet, dass es zum Einbau in Steckdosen. So wie ich das verstehe nur die PUSH-PULL-buchsen nicht Warteschlange, wenn es niemand angeschlossen?
das ist mein Verständnis, obwohl ich nicht berührt haben ZMQ für Alter jetzt, könnten sich die Dinge geändert haben.
InformationsquelleAutor Code Painters