
1 ipconfiger 2012-09-09 19:07:04 +08:00 就是IO会阻塞,性能下降 |
2 ratazzi 2012-09-09 19:33:29 +08:00 阻塞,不能切换到其它部分代码的执行 |
3 notedit 2012-09-09 22:25:55 +08:00 monkey patch 不只是patch socket 也会patch thread。 我见过最恶劣的后果就是多个协程共享一个socket连接,每个协程获取的数据不是它想要的。 |
4 chuangbo 2012-09-10 10:15:42 +08:00 会产生灾难啊。。。 同一个进程内所有 gevent 协程阻塞,整个应用立即从高并发变成1并发。 另外还有一些情况是无法 patch 的,比如 mysql-python 这样使用了 libmysqlclient 的库,io 使用的是系统的 socket,而不是 python 中的 _socket,monkey patch 就对其无效了,只要是数据库 IO,就会堵住整个应用。 |
5 chuangbo 2012-09-10 10:16:52 +08:00 其实用了协程这样的东西,比如 eurasia3, tornado, gevent,都要处处小心各种 IO,包括读写文件打开外部进程什么的,尤其是各种第三方库,不兼容协程就无法使用。 |
7 Livid MOD OP PRO @chuangbo 而且,貌似如果用的是 ESN 的 umysql / umemcache 系列的话,都不需要在开始的时候 from gevent import monkey; monkey.patch_all() 了? |
8 phuslu 2012-09-10 14:59:32 +08:00 |