华子的代码空间

逆水行舟,不进则退。 关注系统编程、网络编程、并发、分布式。

gevent注意事项

1. gevent.server.StreamServer 会针对每个客户端连接启动一个greenlet处理,要注意的是,如果不循环监听( 阻塞在read ),

每个greenlet会在完成后立即退出,从而导致客户端退出( 发送FIN_ACK给客户端 )。这个问题折腾了一晚上,终于弄明白了。坑爹啊。。。

 

2. 要非常仔细的检查,greenlet处理的代码,发现有可能阻塞IO的地方,尽量用gevent提供的库。

 

3. 一些第三方库隐藏了自己的实现( 通常是直接封装C库),要使得gevent兼容它们,可以用monkey_patch,但不保证全部管用。

 

4. 最后最后的一点,gevent的greenlet性能非常高,所以如果是用它作为并发的client端,那么一定要注意,你的server端处理速度一定要足够快!

否则你的客户端代码会因为服务端的慢速,而失去了greenlet的优势。。。

posted on 2012-07-30 02:01  华子的代码空间  阅读(1011)  评论(0编辑  收藏  举报

导航