Get 'broken pipe' error when running Flask server
Problem
如题。
Reason
这个问题的原因是Flask自带的event loop的是单线程处理请求的,有多个请求同时发生时,而多个请求之间有相互依赖的关系(可以参见stackoverflow中这个问题的例子),产生了死锁,就产生了这个error。
Solution
使用可以更好地处理并发请求的HTTP server来运行Flask写好的web server程序(当然这个HTTP server要支持Python的WSGI
协议)。
可选的HTTP server库有:
Conclusion
Flask本身就是设计为开发web server的app的库,而不是web server本身。所以在开发web server时可以用Flask自带的HTTP server来生成server,而在放入生产环境中时必须要考虑使用其他HTTP server来提供更强劲的web service。
Comments