Wie zu verwenden Zeromq - inproc-und ipc-Transporte?
Ich bin ein Neuling auf ZERMQ. ZeroMQ TCP, INPROC-und IPC-Transporte. Ich Suche Beispiele für die Verwendung von python und inproc in Winx64 und python 2.7, die könnten auch für linux.
Außerdem bin ich auf der Suche für UDP-Transportmittel und kann nicht finden, Beispiele.
Das einzige Beispiel, das ich gefunden ist
import zmq
import zhelpers
context = zmq.Context()
sink = context.socket(zmq.ROUTER)
sink.bind("inproc://example")
# First allow 0MQ to set the identity
anonymous = context.socket(zmq.XREQ)
anonymous.connect("inproc://example")
anonymous.send("XREP uses a generated UUID")
zhelpers.dump(sink)
# Then set the identity ourself
identified = context.socket(zmq.XREQ)
identified.setsockopt(zmq.IDENTITY, "Hello")
identified.connect("inproc://example")
identified.send("XREP socket uses REQ's socket identity")
zhelpers.dump(sink)
Die Verwendung Fall, dass ich denken werde, ist: UDP Verbreitung von Informationen. Testen von Push/Pull unter Verwendung von TCP ist schneller oder würde inproc schneller sein.
Hier die test-Beispiel>..............
Server:
import zmq
import time
context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind("inproc://example2")
while True:
# Wait for next request from client
message = socket.recv()
print "Received request: ", message
# Do some 'work'
time.sleep (1) # Do some 'work'
# Send reply back to client
socket.send("World")
Client:
import zmq
context = zmq.Context()
# Socket to talk to server
print "Connecting to hello world server..."
socket = context.socket(zmq.REQ)
socket.connect ("inproc://example2")
# Do 10 requests, waiting each time for a response
for request in range (1,10):
print "Sending request ", request,"..."
socket.send ("Hello")
# Get the reply.
message = socket.recv()
print "Received reply ", request, "[", message, "]"
Error Msg:
socket.connect ("inproc://example2")
File "socket.pyx", line 547, in zmq.core.socket.Socket.connect (zmq\core\socket.c:5347)
zmq.core.error.ZMQError: Connection refused
InformationsquelleAutor der Frage Merlin | 2011-12-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Meinem besten wissen, UDP wird nicht unterstützt von 0MQ. Auch, IPC ist nur auf unterstützten Betriebssystemen, die POSIX-konforme Implementierung von named pipes; also auf Windows, Sie können wirklich nur 'in-process', TCP, oder PGM. Aber über all diesem, einem 0MQ wichtigsten features ist, dass Ihr Protokoll ist nur ein Teil der Adresse. Sie können jedes Beispiel, ändern Sie die socket-Adresse, und alles sollte funktionieren noch einwandfrei (natürlich vorbehaltlich der vorgenannten Beschränkungen). Auch die ZGuide hat viele Beispiele (eine gute Zahl, die in Python).
InformationsquelleAutor der Antwort pblasucci
Wenn (und nur, wenn) verwenden Sie den ZMQ_PUB oder ZMQ_SUB - sockets, die Sie nicht in die Beispiele, die Sie gab, wo Sie ROUTER verwenden, XREQ, etc - können Sie UDP verwenden, oder genauer gesagt, UDP-multicast - über
EPGM steht für
Encapsulated PGM
d.h. PGM in UDP gekapselt, die mehr kompatibel mit bestehenden Netzwerk-Infrastruktur als raw-PGM.Siehe auch http://api.zeromq.org/2-1:zmq-pgm
Ich weiß nicht, UDP-support für unicast-Szenarien obwohl.
InformationsquelleAutor der Antwort Eugene Beresovsky
ZeroMQ ist thread-safe UDP-Unterstützung ab März 2016:
tests/test_udp.cpp
tests/test_radio_dish.cpp
im libzmq QuellcodeInformationsquelleAutor der Antwort Hitster GTD
Ich hatte das gleiche problem, wenn mein pyzmq und zmq version ist die ältere version, ich ein upgrade der version 15.2.0, dann ist das problem gelöst, die ipc-Adresse Präfix, den ich verwendet ist "inproc://"
os: win7-x64
python: 2.7.6
InformationsquelleAutor der Antwort Greling