我們都知道,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,
可以運用到實際的工作中。
推薦一個gevent學習的博客https://softlns.github.io/2015/11/28/python-gevent/
世上本沒有路,走多了變有路。
作者寄語:
前進的道路我們充滿着迷茫,
前進的每一步我們都會有收獲。
路在腳下,我們決定不了我們的出身,但是我們可以努力改變我們未來。
告別昨天失敗的自己,努力拼搏今天,成就美好明天
QQ:952943386 email:leileili126@163.com qq群:194704520 新群:683894834