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

我们试着用浏览器访问下。

1.png

我们可以看到,这个时候我去访问第一个视图,一直处于加载中,这个时候我去访问第二个视图,也是处于一直加载中,那么我们怎么去修改呢,其实

我们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()

修改后的代码如下,我们可以试着去请求下。

2.png

我们可以看到,当我们第一个阻塞住的时候,我们可以正常的去访问我们第二个路由

3.png

 

那么我们这样就可以实现我们异步的非阻塞的flask,

可以运用到实际的工作中。


相关文章
|
6月前
|
网络协议 API Go
Flask 作者 Armin Ronacher:我不觉得有异步压力
Flask 作者 Armin Ronacher:我不觉得有异步压力
82 0
|
Java 测试技术 Python
Python:Flask使用ThreadPoolExecutor执行异步任务
Python:Flask使用ThreadPoolExecutor执行异步任务
704 0
|
6月前
|
监控 NoSQL 测试技术
python使用Flask,Redis和Celery的异步任务
python使用Flask,Redis和Celery的异步任务
|
消息中间件 前端开发 NoSQL
Win11环境下使用Flask配合Celery异步推送实时/定时消息(Socket.io)
一般情况下,Celery被用来处理耗时任务,比如千篇一律的发邮件或者文件上传之类,本次使用Celery实时或者定时发送基于Websocket的消息队列,因为如果前端已经摒弃老旧的轮询策略,使用Websocket,后端则需要相应的配合Celery进行对持久化的Websocket链接主动推送消息,这种场景在生产环境中还是很常见的,但是网上却鲜有文章阐述,而Celery官方对此的说明是
Win11环境下使用Flask配合Celery异步推送实时/定时消息(Socket.io)
|
应用服务中间件 nginx Python
Python:Flask部署Nginx、gunicorn、gevent、flask、supervisor
Python:Flask部署Nginx、gunicorn、gevent、flask、supervisor
210 0
|
存储 前端开发 JavaScript
基于Flask开发网站 -- 前端Ajax异步上传文件到后台
从网页界面(前端)上传文件到服务器(后端)
465 0
基于Flask开发网站 -- 前端Ajax异步上传文件到后台
|
Python
flask默认非阻塞学习
学习flask的笔记
554 0
|
应用服务中间件 nginx Python
gunicorn +nginx+python3 部署flask项目(gevent+gevent)--依赖的包
gunicorn +nginx+python3 部署(gevent+gevent)--依赖的包 bind = ["0.0.0.0:5010"]workers = 4backlog = 2048worker_class = 'gevent'forwarded_allow_ips = "*"keepa...
1301 0
|
Web App开发 Python
Flask入门邮件同步与异步发送(九)
​ 应用场景: 用户在注册或者密码丢失等过程中,账号绑定邮箱,用户在进行身份认证的过程中,电子邮箱确实是一种很常用的方式,Python中提供了smtplib可以实现发送电子邮件功能,Flask框架也有对应的flask-...