1 """Majordomo Protocol Worker API, Python version     3 Implements the MDP/Worker spec at http:#rfc.zeromq.org/spec:7.     5 Author: Min RK <benjaminrk@gmail.com>     6 Based on Java example by Arkadiusz Orzechowski     8 Originally from Zguide examples, generalized to use CLIENT      9 or DEALER following Generaldomo Protocol. brett.viren@gmail.com    16 from .zhelpers 
import dump, clientish_recv, clientish_send
    21     """Generaldomo Protocol Worker API, Python version    23     Implements the MDP/Worker spec at http:#rfc.zeromq.org/spec:7.    24     Extended as described in https://brettviren.github.io/generaldomo/    27     HEARTBEAT_LIVENESS = 3 
    48     def __init__(self, broker, service, socket_type=zmq.DEALER, verbose=False):
    53         self.
ctx = zmq.Context()
    55         logging.basicConfig(format=
"%(asctime)s %(message)s",
    56                             datefmt=
"%Y-%m-%d %H:%M:%S",
    62         """Connect or reconnect to broker"""    71             logging.info(
"I: connecting to broker at %s...", self.
broker)
    82         """Send message to broker.    84         If no msg is provided, creates one internally    88         elif not isinstance(msg, list):
    95         msg = [MDP.W_WORKER, command] + msg
    97             logging.info(
"I: sending %s to broker", command)
   104         """Send reply, if any, to broker and wait for next request."""   108         if reply 
is not None:
   110             reply = [self.
reply_to, b
''] + reply
   119             except KeyboardInterrupt:
   126                     logging.info(
"I: received message from broker: ")
   134                 assert header == MDP.W_WORKER
   137                 if command == MDP.W_REQUEST:
   146                 elif command == MDP.W_HEARTBEAT:
   149                 elif command == MDP.W_DISCONNECT:
   152                     logging.error(
"E: invalid input message: ")
   159                         logging.warn(
"W: disconnected from broker - retrying...")
   162                     except KeyboardInterrupt:
   171         logging.warn(
"W: interrupt received, killing worker...")
 def clientish_recv(sock, args, kwds)
 
def __init__(self, broker, service, socket_type=zmq.DEALER, verbose=False)
 
def clientish_send(sock, msg, args, kwds)
 
def send_to_broker(self, command, option=None, msg=None)
 
int poll(zmq_pollitem_t *items_, size_t nitems_, long timeout_=-1)
 
def reconnect_to_broker(self)
 
void dump(const SM &) noexcept
 
def recv(self, reply=None)