ls0f / my-issues

0 stars 0 forks source link

Tornado和Gevent的并发模型 #6

Open ls0f opened 8 years ago

ls0f commented 8 years ago

Tornado的并发在Linux上是基于epoll模型,也就是事件驱动。Gevent用的是协程,自己维护了main loop。Gevent通过打patch,可以使用同步方式写异步代码。Tornado还是用callback,当然也可以用yield代替callback。能用好Tornado还是需要有点功力,比如没有异步库就是你的痛。相比Gevent通过patch,同步分分钟变异步,简直不能更爽,但C库永远block着你,比如mysqldb。

ls0f commented 8 years ago

我认为Tornado不适合那些业务很重的场景,作为辅助模块很好,比如长连接push和feed。

看了这篇文章你应该对epoll可以知晓一二了。http://scotdoyle.com/python-epoll-howto.html#blocking-examples

ls0f commented 8 years ago

Tornado里面千万不要有阻塞IO,一旦IO阻塞,整个loop就block住了,新连接不能accept,其他事件也得不到触发执行。