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

 

咱們都知道,flask不支持異步非阻塞的請求,咱們能夠建立一個新項目去測試一下,推薦你們使用pycharm去開發咱們的flask  使用特別的方便。python

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,第二個正常返回,git

咱們試着用瀏覽器訪問下。github

咱們能夠看到,這個時候我去訪問第一個視圖,一直處於加載中,這個時候我去訪問第二個視圖,也是處於一直加載中,那麼咱們怎麼去修改呢,其實flask

咱們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()

修改後的代碼以下,咱們能夠試着去請求下。app

咱們能夠看到,當咱們第一個阻塞住的時候,咱們能夠正常的去訪問咱們第二個路由異步

 

那麼咱們這樣就能夠實現咱們異步的非阻塞的flask,學習

能夠運用到實際的工做中。測試

推薦一個gevent學習的博客https://softlns.github.io/2015/11/28/python-gevent/spa

世上本沒有路,走多了變有路。

做者寄語:

前進的道路咱們充滿着迷茫,

前進的每一步咱們都會有收穫。

路在腳下,咱們決定不了咱們的出身,可是咱們能夠努力改變咱們將來。

告別昨天失敗的本身,努力拼搏今天,成就美好明天

 

QQ:952943386 email:leileili126@163.com  qq羣:194704520  新羣:683894834

相關文章
相關標籤/搜索