我们都知道,flask不支持异步非阻塞的请求,我们可以创建一个新项目去测试一下,推荐大家使用pycharm去开发我们的flask 使用特别的方便。
rom flask import Flask import time app = Flask(__name__) @app.route('/') def hello_world(): time.sleep(10) return 'Hello World!' @app.route('/index') def beijing(): return 'Beijing' if __name__ == '__main__': app.run()
这样我们实现了一个简单的;flask代码,我们让第一个视图休眠10s,第二个正常返回,
我们试着用浏览器访问下。
我们可以看到,这个时候我去访问第一个视图,一直处于加载中,这个时候我去访问第二个视图,也是处于一直加载中,那么我们怎么去修改呢,其实
我们gevent库就可以帮助我们去解决这个问题
from flask import Flask from gevent.pywsgi import WSGIServer from gevent import monkey import time monkey.patch_all() app = Flask(__name__) @app.route('/') def hello_world(): time.sleep(10) return 'Hello World!' @app.route('/index') def beijing(): return 'Beijing' if __name__ == '__main__': http_server = WSGIServer(('127.0.0.1', 5000), app) http_server.serve_forever()
修改后的代码如下,我们可以试着去请求下。
我们可以看到,当我们第一个阻塞住的时候,我们可以正常的去访问我们第二个路由
那么我们这样就可以实现我们异步的非阻塞的flask,
可以运用到实际的工作中。