jueves, 16 de febrero de 2012

Un primer acercamiento a ZeroMQ (con Python)

Estoy aprendiendo a usar ZeroMQ (con Python + pyzqm)y encontré que emular el funcionamiento normal de sockets TCP/IP puede ser algo complicado para un primer acercamiento a la librería.

La implementación del servidor es bastante intuitiva:

  • hacemos bind,
  • esperamos recibir peticiones,
  • para cada petición devolvemos una respuesta.
-

-

La implementación del cliente es la que cambia bastante. Si intentamos enviar un mensaje usando sockets TCP/IP y no se puede establecer conexión con el servidor, del lado del cliente detectamos este problema... Por lo tanto, el envío se realiza correctamente, o se produce algún error de conexión (incluyendo la posibilidad de utilizar timeouts).

Pero con ZeroMQ, si el servidor NO está ejecutándose y el cliente envía un mensaje, el cliente se bloquea hasta que se pueda contactar el servidor y realizar el envío.
-

-

Para evitar que el cliente se bloquee, no hay posibilidad de usar un "timeout", pero podemos implementar algo parecido usando Poll().

-

-

Con esta segunda implementación, el cliente no bloquea si el servidor está caído.

No hay comentarios: