适用于Linux上Python的灵活IPC解决方案?
我正在用Python写一个程序,考虑使用本地的客户端-服务器模型,但我在想怎么让服务器和客户端之间沟通比较好。简单直接的解决方案是最理想的,我不想重新发明轮子。以下是我对这个程序的一些需求:
- 需要在Linux上运行
- 服务器和客户端在同一台机器上,所以不需要通过网络。
- 延迟要低,不会让用户觉得烦。
- 多个客户端可以同时连接到同一个服务器。
- 客户端可以独立于服务器启动,随时可以连接或断开。
- 客户端的数量大概在几十个,不需要支持特别多的连接。
- 客户端有几种不同的类型:
- 流读取器 - 读取持续的数据流(实际上就是文本)。
- 状态读取器 - 读取一些状态信息,这些信息会不定期更新。
- 写入器 - 向服务器发送一些数据,每次都会收到一些响应。
第一种客户端类型看起来比较简单;它就是一个单向的“哑管道”。第二种客户端类型就有点意思了。我想避免简单地定期向服务器询问新数据,因为那样会让用户感到明显的延迟。服务器需要有办法在状态信息更新时,通知所有相关的客户端,这样客户端才能从服务器接收到更新的状态。第三种客户端类型必须是双向的;它会把用户提供的数据发送给服务器,并在每次发送后收到某种响应。
我查看了Python的IPC页面(http://docs.python.org/2/library/ipc.html),但我觉得那些解决方案都不适合我的需求。子进程模块完全不合适,其他的方案又有点低级,不太符合我的要求。
类似的问题Efficient Python to Python IPC也不太一样;我不需要传输Python对象,对于我会有的客户端数量,我也不太担心CPU效率,我只关心Linux,而且那个问题的答案对我来说也没有特别的帮助。
更新:
我不能接受那种只给我推荐框架/库/模块/工具的答案,而没有实际解释怎么用它来处理我提到的三种不同的客户端-服务器关系。如果你说“所有这些都可以用命名管道完成!”我就会问“怎么做?”代码片段是最理想的,但高层次的解决方案描述也可以。