gevent提供wsgi支持,只要是支持wsgi的框架都可以和gevent一起用
tornado用wsgi就无法用自家的异步了
但是gevent本身就是异步的
因为wsgi没有规定异步实现
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的优势。。。
http://blog.csdn.net/tianmo2010/article/details/7892508
其实是把标准库里的socket给换成greenlet的non-blocking版本了
之后的线程支持都是greenlet了
就是传说中的协程
gevent用monkey可以直接把python的线程变成greenlet
from gevent import monkey
from flask_app import app
"""
Monkey补丁让Python线程模式支持Gevent
"""
monkey.patch_all()
协程你可以理解为单线程无锁版线程,线程调度由你自己来。