Flask 内建的 http 服务器不耐艹,怎么办,每三次出现一次 IOError 然后 broken pip 了。。

2017-01-28 08:38:09 +08:00
 rffan
Flask 内建的 http 服务器不耐艹,怎么办,每三次出现一次 IOError 然后 broken pip 了。。然后我换用了 uwsgi 跑 flask 也是酱紫,目前还在用 Flask 开发,有大神门知道这是啥缘故?怎么解决?
服务器完全没问题:自己家的笔记本,就放这么一个 Flask 测试,而且跑的还是 CentOS 7 。
前端用 Nginx 饭袋的。
4447 次点击
所在节点    Python
16 条回复
linbiaye
2017-01-28 08:48:19 +08:00
这是对方异常关闭连接导致的。
rffan
2017-01-28 08:49:31 +08:00
@linbiaye 知道,因为超时了。超时才会产生异常关闭连接。。。 TMD 关键是为何跑 2-3 次, Flask 就会出现这种超时的现象。
linbiaye
2017-01-28 08:52:28 +08:00
那是要你自己找为啥你的应用会超时。或者把 ng 超时时间设长些。
rffan
2017-01-28 08:54:35 +08:00
@linbiaye 一个普通的 sql 查询。前两次都是毫秒级的。后面就不行了。 NG 时间 300 秒了。不能再长了。。
swulling
2017-01-28 09:17:39 +08:00
改成多进程的,有参数配置
rffan
2017-01-28 09:23:55 +08:00
@swulling 已经是 threaded=true 了。开了多线程了。。多进程会比较好?
wwqgtxx
2017-01-28 09:29:26 +08:00
你要不自己写个小 test 程序反复调用你的 @route 方法,不经过 flask 调用,然后统计统计你自己的业务函数的执行速度是不是衰减严重,最后再去找 flask 的问题
gouchaoer
2017-01-28 09:34:46 +08:00
@rffan py 的多线程是假多线程,可能有问题。。。弄成多进程的话,执行就和 php 方式类似了,不过 php 的 php-fpm 要成熟很多, gunicorn 之类的不好说
rffan
2017-01-28 10:22:19 +08:00
@wwqgtxx 换了 Python 版本解决了。。。之前用的是系统自带的 2.7.5 现在换成 2.7.13
rffan
2017-01-28 10:23:00 +08:00
@gouchaoer 假的?好蛋疼啊。。。
pimin
2017-01-28 10:27:23 +08:00
不都是用 WSGI 么?
还是我理解错了?
pimin
2017-01-28 10:32:48 +08:00
好吧,看到 uuWSGI 也出问题了
感觉 flask 本身的问题可能比较小, flask 毕竟还是有不少生产环境部署的。
rffan
2017-01-28 10:47:31 +08:00
@pimin 恩。所以我在怀疑。谷歌了有人说是没有清空缓冲区造成的。。 Python 社区有这个问题提了。而且已经关闭了。。于是想到了换版本。生产环境,我看了豆瓣的书。他们都是同时启用多后端,用 ip_hash 来反代,这样的效果就是多多多线程加多多多进程。基本上不会出现这种问题吧。
fy
2017-01-28 10:58:56 +08:00
@rffan 多线程是真的,但字节码不能并行执行( GIL )。所以多线程只对 IO 等待有效,像爬虫这种程序不受影响, http 一半一半。一般来说建议多进程。
yh7gdiaYW
2017-01-30 08:37:21 +08:00
自带的是有这个毛病,我一直是用 gunicorn + gevent 跑,效果拔群
yanzixuan
2017-02-06 15:24:02 +08:00
以前遇到过类似的,但是是 gunicorn 的版本不够新。更新后就再也没出现过。

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

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

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

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

© 2021 V2EX