gunicorn能够让一个单线程的服务器相应多个请求吗

2013-09-24 15:59:06 +08:00
 ufo22940268
https://gist.github.com/6681654

比如说这么一段代码,我希望每一个请求过来之后能够马上打印出`request`. 这样子能够通过gunicorn做到吗?我试过`gunicorn -k gevent -w 4 a:app",貌似没有成功。

如果不可以的话有什么好的解决方案吗?

我现在正在用flask开发一个web应用,因为实在是菜鸟,所以很多名词用法不正确,望指出,谢谢
4366 次点击
所在节点    Python
7 条回复
julyclyde
2013-09-24 16:16:57 +08:00
print当然不会给浏览器
ufo22940268
2013-09-24 16:18:19 +08:00
@julyclyde 我希望再终端下答应出来
sobigfish
2013-09-24 16:45:10 +08:00
logging貌似可以 试试?
lqs
2013-09-24 18:46:39 +08:00
一般的 Web 应用不会像这个示例这样占用 CPU,而是应该在等待 IO。

如果想做这个测试可以用 gevent.sleep(1)。正式的应用要确保所有的第三方库(如 MySQL 客户端)都能够支持 gevent,才能在单进程单线程的 gevent 环境下不阻塞。
ufo22940268
2013-09-24 18:51:44 +08:00
@lqs
gunicorn -b 127.0.0.1:5000 -w 4 -k gevent --worker-connections=2000 a:app
/Library/Python/2.7/site-packages/gunicorn/workers/ggevent.py:20: UserWarning: libevent version mismatch: system version is '2.0.21-stable' but this gevent is compiled against '2.0.19-stable'
import gevent
2013-09-24 18:49:34 [8930] [INFO] Starting gunicorn 18.0
2013-09-24 18:49:34 [8930] [INFO] Listening at: http://127.0.0.1:5000 (8930)
2013-09-24 18:49:34 [8930] [INFO] Using worker: gevent
2013-09-24 18:49:34 [8933] [INFO] Booting worker with pid: 8933
2013-09-24 18:49:34 [8934] [INFO] Booting worker with pid: 8934
2013-09-24 18:49:34 [8935] [INFO] Booting worker with pid: 8935
2013-09-24 18:49:34 [8936] [INFO] Booting worker with pid: 8936
2013-09-24 18:49:37.355298
2013-09-24 18:49:40.379017
2013-09-24 18:49:43.393222
2013-09-24 18:49:46.411903
2013-09-24 18:49:49.426570

我用了gevent.sleep(3), 结果还是拖拖的顺序执行,真不知道问题出在哪里。
而且我已经配置了nginx了,不知道是不是那个warning的问题
ufo22940268
2013-09-24 18:58:10 +08:00
重新编译了一次libevent, warning消除了,可是问题依然存在
ufo22940268
2013-09-24 21:41:19 +08:00
这个问题我终于解决了。

原来是我自己测试的方法不对,我在chrome中开了多个tab来测试,这样子就测不出来

但是用一个chrome一个firefox来测试,或者ab -n 4 -c 4来测试就能够看出并发了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/83508

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX