flask 實現異步非阻塞----gevent


 

我們都知道,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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM