Comment utiliser les transports inproc et ipc de Zeromq?
Im un débutant à ZERMQ. ZeroMQ a TCP, INPROC et de l'IPC et des transports. Je suis à la recherche pour des exemples d'utilisation de python et inproc dans Winx64 et python 2.7, qui pourrait également être utilisé pour linux.
Aussi, j'ai été à la recherche pour les méthodes de transport et ne peux pas trouver des exemples.
Le seul exemple que j'ai trouvé est
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)
Le cas d'utilisation je suis en train de réfléchir: UDP comme la distribution de l'info. Les tests de Pousser/Tirer à l'aide de TCP est plus rapide ou serait inproc être plus rapide.
Ici l'exemple de test>..............
Serveur:
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, "]"
Msg D'Erreur:
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
source d'informationauteur Merlin
Vous devez vous connecter pour publier un commentaire.
Au meilleur de ma connaissance, UDP n'est pas pris en charge par 0MQ. Aussi, l'IPC est pris en charge uniquement sur les Systèmes d'exploitation qui ont une POSIX-conformité de la mise en œuvre de canaux nommés; de sorte que, sous Windows, vous pouvez vraiment utiliser que de l' 'inproc', TCP, ou PGM. Cependant, au-dessus et au-delà de tout cela, l'un des 0MQ principales caractéristiques est que le protocole n'est qu'une partie de l'adresse. Vous pouvez prendre n'importe quel exemple, changer l'adresse de socket, et tout devrait toujours fonctionner parfaitement (sous réserve, bien sûr, pour les limitations susmentionnées). Aussi, le ZGuide a de nombreux exemples (un bon nombre de qui sont disponibles dans Python).
Si ( et seulement si ), vous utilisez le ZMQ_PUB ou ZMQ_SUB sockets - que vous ne faites pas dans les exemples que vous citez, où vous utilisez un ROUTEUR, XREQ, etc - vous pouvez utiliser UDP, ou plus précisément, UDP multicast via
EPGM signifie
Encapsulated PGM
c'est à dire PGM encapsulé dans UDP, qui est plus compatible avec l'infrastructure de réseau existante de raw PGM.Voir aussi http://api.zeromq.org/2-1:zmq-pgm
Je ne sais pas du tout UDP prise en charge de monodiffusion scénarios.
ZeroMQ est thread-safe UDP prise en charge en Mars 2016:
tests/test_udp.cpp
tests/test_radio_dish.cpp
dans le libzmq code sourceJ'ai eu le même problème lors de mon pyzmq et zmq la version est plus ancienne version, je l'ai mise à niveau de la version de 15.2.0, alors le problème est résolu, l'ipc du préfixe de l'adresse que j'ai utilisé est "inproc://"
os: win7-64 x
python: 2.7.6