深入flask之异步非堵塞实现代码示例


Posted in Python onJuly 31, 2018

官方其实已经给出了方案,只不过藏的有点深,在加上网上有很多不太靠谱的帖子误导了我(当然不排除我没理解的原因哈)。所以为了让有些朋友的少走点弯路,也为给自己做个备忘。

完整代码:https://github.com/wskssau/my_notespace的 python/todo_app

解决方案: flask+gevent

安装gevent

pip install gevent

修改代码

# 文件头部
from gevent import monkey
from gevent.pywsgi import WSGIServer

# 在玩websockets,可以无视之哈,有空贴下flask websockets实现哈
from geventwebsocket.handler import WebSocketHandler

import time

# gevent的猴子魔法
monkey.patch_all()

app = Flask(__name__)

app.config.update(
 DEBUG=True
)

@app.route('/asyn/1/', methods=['GET'])
def test_asyn_one():
 if request.method == 'GET':
  time.sleep(10)
  return 'hello asyn'


@app.route('/test/', methods=['GET'])
def test():
 return 'hello test'


if __name__ == "__main__":
 # app.run()
 http_server = WSGIServer(('', 5000), app, handler_class=WebSocketHandler)
 http_server.serve_forever()

运行之后可以先访问/asyn/1/再访问/test/,可以明显发现,/asyn/1/在做耗时任务时不会影响其他请求

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python调用新浪微博API项目实践
Jul 28 Python
利用Django框架中select_related和prefetch_related函数对数据库查询优化
Apr 01 Python
Python计算三角函数之asin()方法的使用
May 15 Python
CentOS下使用yum安装python-pip失败的完美解决方法
Aug 16 Python
Python基于Floyd算法求解最短路径距离问题实例详解
May 16 Python
python调用百度REST API实现语音识别
Aug 30 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
Jan 08 Python
python实现Dijkstra静态寻路算法
Jan 17 Python
Python表达式的优先级详解
Feb 18 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
Mar 09 Python
Django values()和value_list()的使用
Mar 31 Python
Django中FilePathField字段的用法
May 21 Python
Django框架使用富文本编辑器Uedit的方法分析
Jul 31 #Python
Windows下python3.6.4安装教程
Jul 31 #Python
windows下pycharm安装、创建文件、配置默认模板
Jul 31 #Python
win8下python3.4安装和环境配置图文教程
Jul 31 #Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
Jul 31 #Python
Win8下python3.5.1安装教程
Jul 29 #Python
win7下python3.6安装配置方法图文教程
Jul 31 #Python
You might like
全局记录程序片段的运行时间 正确找到程序逻辑耗时多的断点
2011/01/06 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
2016/03/03 PHP
PHP 序列化和反序列化函数实例详解
2020/07/18 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
基于jQuery的动态表格插件
2011/03/28 Javascript
常用的JavaScript验证正则表达式汇总
2013/11/26 Javascript
Javascript基础知识(三)BOM,DOM总结
2014/09/29 Javascript
AngularJS初始化静态模板详解
2016/01/14 Javascript
JS 调用微信扫一扫功能
2016/12/22 Javascript
ES6中Symbol类型用法实例详解
2017/04/06 Javascript
微信小程序中setInterval的使用方法
2017/09/29 Javascript
微信小程序自定义组件components(代码详解)
2019/10/21 Javascript
vue实现全屏滚动效果(非fullpage.js)
2020/03/07 Javascript
微信小程序 button样式设置为图片的方法
2020/06/19 Javascript
python记录程序运行时间的三种方法
2017/07/14 Python
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
浅谈配置OpenCV3 + Python3的简易方法(macOS)
2018/04/02 Python
Django框架的使用教程路由请求响应的方法
2018/07/03 Python
Python3 jupyter notebook 服务器搭建过程
2018/11/30 Python
Python 实现文件读写、坐标寻址、查找替换功能
2019/09/11 Python
使用Python生成200个激活码的实现方法
2019/11/22 Python
详解字符串在Python内部是如何省内存的
2020/02/03 Python
使用python创建Excel工作簿及工作表过程图解
2020/05/27 Python
Python生成器next方法和send方法区别详解
2020/05/30 Python
华润集团网上药店:健一网
2016/09/19 全球购物
澳大利亚领先的内衣店:Bendon Lingerie澳大利亚
2020/05/15 全球购物
产品促销活动策划书
2014/01/15 职场文书
专业技术职务聘任证明
2015/03/02 职场文书
销售督导岗位职责
2015/04/10 职场文书
道歉情书大全
2015/05/12 职场文书
人为什么会“幸灾乐祸”?
2019/08/06 职场文书
导游词之千岛湖
2019/09/23 职场文书
python使用shell脚本创建kafka连接器
2022/04/29 Python
oracle数据库去除重复数据
2022/05/20 Oracle
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android