Herramientas de usuario

Herramientas del sitio


fw:zeromq

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
fw:zeromq [2013/07/06 11:46]
alfred [Notas]
fw:zeromq [2020/05/09 09:25] (actual)
Línea 2: Línea 2:
   * [[http://​www.zeromq.org/​|Página web del proyecto]]   * [[http://​www.zeromq.org/​|Página web del proyecto]]
   * [[http://​zguide.zeromq.org/​page:​all|Guía del framework]]   * [[http://​zguide.zeromq.org/​page:​all|Guía del framework]]
 +  * [[http://​zeromq.github.io/​pyzmq/​api/​index.html|Documentación pyzmq]]
 ===== Uso de la librería ===== ===== Uso de la librería =====
  
Línea 97: Línea 98:
   * Si un publisher no tiene subscribers los mensajes quedarán desechados.   * Si un publisher no tiene subscribers los mensajes quedarán desechados.
   * TCP con esta estructura es lento.   * TCP con esta estructura es lento.
 +  * Para realizar una subscripción a todos los mensajes haremos: 
 +<code python>​ 
 +socket.setsockopt(zmq.SUBSCRIBE,​ ""​) 
 +</​code>​
 ==== Pipeline ==== ==== Pipeline ====
 Funciona como el Rep-Req sólo que en este no hay una respuesta desde el otro nodo. Es perfecto para los mensajes en paralelo. Imaginemos la siguiente estructura: \\  Funciona como el Rep-Req sólo que en este no hay una respuesta desde el otro nodo. Es perfecto para los mensajes en paralelo. Imaginemos la siguiente estructura: \\ 
Línea 296: Línea 300:
 import zmq import zmq
  
-def zeromq_relay(a, b):+def zmq_streaming_device(a, b):
     while True:     while True:
         msg = a.recv()         msg = a.recv()
Línea 306: Línea 310:
         sys.stdout.write('​.'​)         sys.stdout.write('​.'​)
         sys.stdout.flush()         sys.stdout.flush()
- 
-def zmq_streaming_device(upstream,​ downstream):​ 
-    zeromq_relay(upstream,​ downstream) 
  
 context = zmq.Context() context = zmq.Context()
Línea 317: Línea 318:
 zmq_streaming_device(s1,​ s2) zmq_streaming_device(s1,​ s2)
 </​code>​ </​code>​
-===== Patrones ===== +===== Patrones Request/​Reply ​===== 
-==== Patrones Request/​Reply ==== +===== Patrones Publish/​Subscribe ​=====
-==== Patrones Publish/​Subscribe ====+
 ===== Avanzado ===== ===== Avanzado =====
 ==== Control de flujo ==== ==== Control de flujo ====
Línea 336: Línea 336:
   * Saber la versión con ''​zmq.zmq_version()''​.   * Saber la versión con ''​zmq.zmq_version()''​.
   * Para realizar conexiones no bloqueantes los usaremos con [[fw:​gevent&#​zeromq|greenlets]].   * Para realizar conexiones no bloqueantes los usaremos con [[fw:​gevent&#​zeromq|greenlets]].
 +  * Para instalar la librería en el sistema: ''​apt-get install libzmq-dev''​.
 +
 +==== Instalar en Ubuntu ====
 +Instalación de la librería del sistema:
 +<​code>​
 +$ sudo apt-get install python-dev libzmq-dev
 +</​code>​
 +Instalación en Python:
 +<​code>​
 +$ sudo pip install pyzmq
 +</​code>​
 +Recuerda que para utilizar ''​pip''​ has de tener instalado el paquete ''​python-pip''​
 +==== Instalar en Windows ====
 +Necesitarás agregar el paquete ''​VS2010 C++ redistributable''​.
 ==== Como... ==== ==== Como... ====
 === Enviar\recibir varios paquetes === === Enviar\recibir varios paquetes ===
Línea 392: Línea 406:
     # Do the work     # Do the work
     time.sleep(int(s)*0.001)     time.sleep(int(s)*0.001)
 +</​code>​
 +
 +=== Enviar no bloqueante ===
 +  * Pero cuidado, el objeto sender no se elminará hasta que los datos hayan sido enviados.
 +<code python>
 +sender.send(jdata,​ zmq.NOBLOCK)
 </​code>​ </​code>​
fw/zeromq.1373111186.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)