@needs_zmq
def poll_messages():
    while True:
        # get next waiting message
        try:
            # don't block on data, but once we have the data wait for the compressed flag
            data = _conn_details.sink.recv(flags=zmq.NOBLOCK)
            compressed = _conn_details.sink.recv_json()
        except zmq.ZMQError:
            # still waiting for data?
            e = sys.exc_info()[1]
            if e.errno == zmq.EAGAIN:
                return
            raise

        # deserialize and call the handlers
        subject, message = _serializer.deserialize(data, compressed)
        for handler in _handlers.get(subject, []):
            handler(subject, message)
JRPC test: (D) cfg.gs.channel.addRule, cfg.gs.channel.removeRule
dataset/ETHPy150Open manahl/mdf/mdf/remote/messaging.py/poll_messages--crossover with--dataset/ETHPy150Open satnet-project/server/services/configuration/tests/jrpc/test_rules.py/JRPCRulesTest.test_add_daily_rule