日志 zmq 套接字实例发送/接收



>我正在调试一些零mq代码,我想记录套接字实例发送/接收。换句话说,我有

context = zmq.Context()
socket = context.socket(zmq.REQ)
socket.connect("tcp://127.0.0.1:5000")

我想以某种方式在代码中的其他地方记录套接字实例的发送/接收。

这里有什么想法吗?我不知道从哪里开始。

下面是记录每条消息的 Socket 对象示例:

导入日志记录导入时间导入 ZMQ类 LogSocket(对象(:    套接字 = 无    日志 = 无    名称 = 无    def __init__(self, socket, log=None, name=None(:        ""包装套接字以便发送/recv_multipart记录他们的消息""        self.socket = socket        如果日志为"无":            logging.basicConfig(level=logging.INFO(            log = logging.getLogger((.info        自我.log = 日志        如果名称为"无":            名称 = s.identity 或 repr(s(        self.name = 名称    def send_multipart(self, msg, *args, **kwargs(:        self.log("%s sending: %r" % (self.name, msg((        return self.socket.send_multipart(msg, *args, **kwargs(    def recv_multipart(self, *args, **kwargs(:        msg = self.socket.recv_multipart(*args, **kwargs(        self.log("%s received: %r" % (self.name, msg((        返回味精    定义__getattr__(自我,钥匙(:        返回getattr(self.socket, key(CTX = ZMQ。Context.instance((s = ctx.socket(zmq.要求(s.connect("tcp://127.0.0.1:5556"(# 将 zmq 套接字包装在日志记录对象中:# 此对象具有完全相同的接口s = LogSocket(s, name="REQ"(对于范围 (5( 中的 i:    睡眠时间(1(    s.send_multipart(['你好', '世界'](    回复 = s.recv_multipart((    # 在这种情况下,只记录_multipart方法,因此直接发送/接收不是:    s.send("安静"(    s.recv((

用于在一个地方处理序列化/日志记录/身份验证等的辅助对象的一个例子是 IPython 中的 Session 对象,它比这个简单的情况复杂得多,但允许您集中代码中的所有消息传递抽象。

最新更新