让Flask处理异步请求

今天意外在网上看到一篇文章,写到 

后端使用gunicorn+flask的方式,刚开始就直接使用flask跑,但是有一次就出现502了,发现由于flask是单进程处理请求的,不像Tornado的异步,同时访问的人数稍微过多,就会出现阻塞的情况,导致nginx出现502的问题


于是开始寻找flask处理异步请求的解决方案

首先 我不了解tornado的异步处理方式,有时间我会去了解一下

其次,我在实验里犯了一个错误,我随手用sleep(100)去做阻塞,造成的结果是整个进程被我挂起了,其实我只需要在视图函数里写一个死循环就解决这个小问题,但是一时大意,浪费了2个小时。

在这里要再次声明:不管是C语言还是Python ,Sleep都是让进程挂起的,只有在进程初始化阶段才应该去考虑使用

__author__ = ‘Brown‘
from flask import Flask
from flask.ext.script import Manager
app = Flask(__name__)
manager = Manager(app)
count = 0
@app.route(‘/‘)
def index():
    print "get"
    global  count
    print count
    count = count + 1
    print count
    if count < 2:
        while True:
            pass
    return "abc"
if __name__ == ‘__main__‘:
    manager.run()



代码其实很简单,第一个请求挂起,第二个请求不受第一个请求干扰。

f2.py runserver --host 0.0.0.0 --threaded



运行的时候加上threaded参数即可

(未完待续)


文章来自:http://my.oschina.net/u/2007546/blog/466669
© 2021 jiaocheng.bubufx.com  联系我们
ICP备案:鲁ICP备09046678号-3