如何使用asyncio和zmq有效地分离套接字轮询器?

时间:2016-04-16 14:33:56

标签: python asynchronous zeromq python-asyncio

假设我想使用ZeroMQ(pyzmq)和asyncio(对于事件循环,协同程序等)实现echo服务器和客户端。

现在我希望通过添加心跳来增加可靠性。由于我不想与我的精彩回声协议进行太多交互,因此这个心跳是由客户端和服务器在一对专用套接字上完成的。

据我所知,的方式™是在服务器类中创建一个新的zmq套接字,将其注册到现有的Poller并让服务器类处理所有内容,从超时计算到发送节拍。当然,这很有效。

但这比它应该更复杂(这是个人观点)。从服务器的角度来看,'heartbeats'是实现细节。什么样的心跳是回答一个简单的问题:“客户还在吗?”。从技术上讲,我想设置一个带有超时和地址的Heartbeat对象。 Heartbeat对象将执行所有套接字设置,与节拍相关的套接字轮询,发送实际节拍并接收它们。

从服务器的角度来看,我会在需要时使用client.is_alive()。但这需要两个套接字轮询器并行工作。我可以通过遗嘱执行人来实现这一目标,但这似乎并不正确。你会怎么做?

0 个答案:

没有答案