前言

最近做物联网项目的时候需要搭建一个异步非阻塞的HTTP服务器,经过查找资料,发现可以使用gevent包。

代码清单

下面放上代码清单,以后需要用到的时候直接移植即可。

# coding=utf-8

# Python Version: 3.5.1

# Flask

from flask import Flask, request, g

# gevent

from gevent import monkey

from gevent.pywsgi import WSGIServer

monkey.patch_all()

# gevent end

import time

app = Flask(__name__)

app.config.update(DEBUG=True)

@app.route('/asyn/', methods=['GET'])

def test_asyn_one():

print("asyn has a request!")

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)

http_server.serve_forever()

测试

打开浏览器,首先请求http://127.0.0.1:5000/asyn/,然后

再请求http://127.0.0.1:5000/test/这个接口十次。如果是一般的Flask框架,后面的接口是没有响应的。

打印内容如下:

asyn has a request!

127.0.0.1 - - [2016-10-24 20:45:10] “GET /test/ HTTP/1.1” 200 126 0.000000

127.0.0.1 - - [2016-10-24 20:45:11] “GET /test/ HTTP/1.1” 200 126 0.000000

127.0.0.1 - - [2016-10-24 20:45:11] “GET /test/ HTTP/1.1” 200 126 0.000000

127.0.0.1 - - [2016-10-24 20:45:12] “GET /test/ HTTP/1.1” 200 126 0.000000

127.0.0.1 - - [2016-10-24 20:45:12] “GET /test/ HTTP/1.1” 200 126 0.000998

127.0.0.1 - - [2016-10-24 20:45:13] “GET /test/ HTTP/1.1” 200 126 0.001001

127.0.0.1 - - [2016-10-24 20:45:14] “GET /test/ HTTP/1.1” 200 126 0.000000

127.0.0.1 - - [2016-10-24 20:45:14] “GET /test/ HTTP/1.1” 200 126 0.001014

127.0.0.1 - - [2016-10-24 20:45:15] “GET /test/ HTTP/1.1” 200 126 0.001000

127.0.0.1 - - [2016-10-24 20:45:15] “GET /test/ HTTP/1.1” 200 126 0.000000

127.0.0.1 - - [2016-10-24 20:45:18] “GET /asyn/ HTTP/1.1” 200 126 10.000392

参考资料

flask异步操作_Flask-Flask实现异步非阻塞请求功能相关推荐

  1. flask异步操作_Flask实现异步非阻塞请求功能实例解析

    本文研究的主要是Flask实现异步非阻塞请求功能,具体实现如下. 最近做物联网项目的时候需要搭建一个异步非阻塞的HTTP服务器,经过查找资料,发现可以使用gevent包. 关于gevent Geven ...

  2. java处理异步非阻塞请求_Spring WebFlux 的异步非阻塞处理

    前言 随着 Web Servlet 技术栈的不断发展实现了异步处理与非阻塞 IO,但是其异步是不彻底的,因为受制于 Servlet 规范本身,比如其规范是同步的(Filter,Servlet)或阻塞( ...

  3. flask 实现异步非阻塞----gevent

    我们都知道,flask不支持异步非阻塞的请求,我们可以创建一个新项目去测试一下,推荐大家使用pycharm去开发我们的flask  使用特别的方便. rom flask import Flask im ...

  4. Flask实现异步非阻塞

    1.简介 给大家先说明一下,什么是异步非阻塞. 异步非阻塞:说白了就是server端开启进程,client端同时向server发起多个请求,server端在处理请求的时候,不用等一个请求处理完了,再处 ...

  5. 真正的 Tornado 异步非阻塞

    其中 Tornado 的定义是 Web 框架和异步网络库,其中他具备有异步非阻塞能力,能解决他两个框架请求阻塞的问题,在需要并发能力时候就应该使用 Tornado. 但是在实际使用过程中很容易把 To ...

  6. 同步阻塞、同步非阻塞、异步阻塞、异步非阻塞与 I/O 多路复用、Java NIO 之间的联系

    同步阻塞.同步非阻塞.异步阻塞.异步非阻塞与 I/O 多路复用.Java NIO 之间的联系 先验知识 此处的异步指的是什么 同步.异步.阻塞.非阻塞 同步阻塞.同步非阻塞.异步阻塞.异步非阻塞 一个 ...

  7. node异步非阻塞的杂谈

    引言 node作为服务器的优势就在于适合处理高并发的请求,对于web网站后台这种I/O密集型的后台尤其有优势,其核心就在于node是一个异步非阻塞模型.关于异步,同步,阻塞,非阻塞这些概念,本文不做讨 ...

  8. tornado异步非阻塞实现方式

    目录 tornado异步非阻塞实现方式 1.多线程 2.老版协程 3.新版协程 实验 1.完全阻塞,同步代码 2.老版本协程 3新版本协程 4 多线程+新版协程,线程函数失效 5.线程+不声明异步,可 ...

  9. Python web框架 Tornado(二)异步非阻塞使用以及原理

    原文: http://www.liangxiansen.cn/2018/04/11/tornado/ 作者: 梁先森 稍有改动 Tornado默认是单进程单线程.实时的web特性通常需要为每个用户一个 ...

最新文章

  1. poj2965-poj2965-The Pilots Brothers' refrigerator
  2. 关于可观察性的三大支柱,你应该了解这些
  3. HttpRunner环境部署-踩坑篇
  4. ExtJS4 API文档阅读(四)——Data
  5. 电赛 | 电源题软件如何准备?
  6. 有名管道和无名管道的区别
  7. 1040B. Shashlik Cooking
  8. 我们前端忙成狗 人家后端写sql?
  9. 带有下标的赋值维度不匹配是什么意思_三言两语说清TensorFlow是什么?拿来干嘛的?...
  10. 主键、聚集索引、非聚集索引区别
  11. 目标检测——val集的作用
  12. 天翼校园客户端“中毒”,江苏、广东、湖南成重灾区
  13. 公开课:Excel做制冷仿真计算入门到提高
  14. 2019强网杯部分writeup
  15. unity-shader-延迟渲染
  16. vue2开发过程中el-select懒加载问题
  17. echarts动态legend不变更
  18. Android Studio 3.0+ 新Dex编译器D8 Desugar R8
  19. 嵌入式 linux下proc目录下的文件详解
  20. Html5--(span标签)

热门文章

  1. 如何给打印机注入碳粉
  2. ANA 2 优化版含预设 – Sonic Academy ANA 2 Bundle v2.0.94 WiN
  3. 直播下沉探索:从视频相亲开始
  4. notepad++ 代码注释快捷键
  5. 19行代码爬取-全职高手-音频
  6. 郑州下雪天黑心司机抬高乘车价
  7. 掌商科技众云推开发个性化“旅游岛”互联网+时代
  8. HW系统安全补丁总结
  9. 微信小程序—组件简介
  10. Vue实现购物车页面