深入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列表(list)常用操作方法小结
Feb 02 Python
python常见的格式化输出小结
Dec 15 Python
Python实现简易端口扫描器代码实例
Mar 15 Python
python 设置文件编码格式的实现方法
Dec 21 Python
python3实现磁盘空间监控
Jun 21 Python
Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解
Apr 26 Python
python傅里叶变换FFT绘制频谱图
Jul 19 Python
浅谈Python type的使用
Nov 19 Python
Python tkinter实现简单加法计算器代码实例
May 13 Python
用Python开发app后端有优势吗
Jun 29 Python
Python中logger日志模块详解
Aug 04 Python
python urllib和urllib3知识点总结
Feb 08 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
php cookies中删除的一般赋值方法
2011/05/07 PHP
php提交表单发送邮件的方法
2015/03/20 PHP
ThinkPHP函数详解之M方法和R方法
2015/09/10 PHP
Laravel事件监听器用法实例分析
2019/03/12 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
2019/10/21 PHP
jquery提交form表单时禁止重复提交的方法
2014/02/13 Javascript
JavaScript 面向对象与原型
2015/04/10 Javascript
jQuery使用正则表达式限制文本框只能输入数字
2016/06/18 Javascript
js无法获取到html标签的属性的解决方法
2016/07/26 Javascript
AngularJS 获取ng-repeat动态生成的ng-model值实例详解
2016/11/29 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
2017/08/28 Javascript
如何优雅地在Node应用中进行错误异常处理
2019/11/25 Javascript
Typescript3.9 常用新特性一览(推荐)
2020/05/14 Javascript
微信小程序中data-key属性之数据传输(经验总结)
2020/08/22 Javascript
python备份文件以及mysql数据库的脚本代码
2013/06/10 Python
Python递归遍历列表及输出的实现方法
2015/05/19 Python
Python3中的f-Strings增强版字符串格式化方法
2020/03/04 Python
Python基础类继承重写实现原理解析
2020/04/03 Python
基于matplotlib xticks用法详解
2020/04/16 Python
Django 解决model 反向引用中的related_name问题
2020/05/19 Python
如何验证python安装成功
2020/07/06 Python
Subside Sports德国:足球球衣和球迷商品
2019/06/08 全球购物
英国电子产品购物网站:Tech in the basket
2019/11/08 全球购物
Eclipse面试题
2014/03/22 面试题
火锅店创业计划书范文
2014/02/02 职场文书
护士自我鉴定总结
2014/03/24 职场文书
关于建议书的格式范文
2014/05/20 职场文书
营销与策划专业求职信
2014/06/20 职场文书
纪检干部先进事迹材料
2014/08/23 职场文书
简历中的自我评价怎么写呢?
2019/04/30 职场文书
2019新学期家长会工作计划
2019/08/21 职场文书
Mysql数据库按时间点恢复实战记录
2021/06/30 MySQL
golang中的struct操作
2021/11/11 Golang
Docker下安装Oracle19c
2022/04/13 Servers
Debian11 Xfce终端光标的颜色怎么设置?
2022/08/14 数码科技
Rust中的Struct使用示例详解
2022/08/14 Javascript