最近尝试gevent+zookeeper组合,google找到gevent-zookeeper库(https://github.com/jrydberg/gevent-zookeeper),gevent-zookeeper库依赖zookeeper的python库,使用它的异步接口,实现和gevent微线程的结合。
因为开发机器用的是windows系统,折腾了半天,仍是没将zookeeper-3.4.3的python库编译出来。看了下编译错误,主要是vc编译c代码,要求在函数开头先定义变量。对zookeeper.c进行修改,我须要的功能代码基本编译经过(除了pyzoo_get_children方法中使用deallocate_String_vector引发的连接错误没解决)。
连接提供修改过的zookeeper.c和编译好的zookeeper.pyd for python2.6。
接下来,尝试gevent-zookeeper库。这个库也不支持windows系统(它使用了windows没有的fcntl库),只能本身动手改造。用zeromq的socket代替了os.pipe,改造后的
gevent-zookeeper。固然也能够用系统标准的socket实现,如今这么作增长了gevent-zookeeper的依赖条件。 终于能够在windows下尝试gevent-zookeeper库,感受还不错,接口清晰、简单,使用方便。使用中发现一个问题,单个节点的监控功能(DataMonitor)能实时收到回调信息,子节点监控功能(ChildrenMonitor)却不是实时回调的,这个有点怪异。