激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - JAVA教程 - Flask實現異步非阻塞請求功能實例解析

Flask實現異步非阻塞請求功能實例解析

2021-04-04 14:10閼男秀 JAVA教程

這篇文章主要介紹了Flask實現異步非阻塞請求功能實例解析,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下

本文研究的主要是Flask實現異步非阻塞請求功能,具體實現如下。

最近做物聯網項目的時候需要搭建一個異步非阻塞的HTTP服務器,經過查找資料,發現可以使用gevent包。

關于gevent

Gevent 是一個 Python 并發網絡庫,它使用了基于 libevent 事件循環的 greenlet 來提供一個高級同步 API。下面是代碼示例:

?
1
2
3
4
5
from gevent.wsgi import WSGIServer
from yourapplication import app
 
http_server = WSGIServer(('', 5000), app)
http_server.serve_forever()

代碼清單

下面放上Flask異步非阻塞的代碼清單,以后需要用到的時候直接移植即可。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 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()

關于monkey.patch_all()

為什么要加monkey.patch_all()這一條語句呢?在gevnet的官網有詳細的解釋,這里簡單說明一下:

monkey carefully replace functions and classes in the standard socket module with their cooperative counterparts. That way even the modules that are unaware of gevent can benefit from running in a multi-greenlet environment.

翻譯:猴子補丁仔細的用并行代碼副本替換標準socket模塊的函數和類,這種方式可以使模塊在不知情的情況下讓gevent更好的運行于multi-greenlet環境中。

測試

打開瀏覽器,首先請求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實現異步非阻塞請求功能實例解析的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

原文鏈接:http://blog.csdn.net/yannanxiu/article/details/52915929

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久综合久久综合久久 | 国产在线观看福利 | 粉嫩蜜桃麻豆免费大片 | 美女一级视频 | 狼伊千合综网中文 | 欧美性激情视频 | 欧美18—19sex性护士中国 | 性生活视频软件 | 免费国产一级特黄久久 | 欧美一区二区精品夜夜嗨 | 久久精品视频一区二区三区 | 免费观看一区二区三区视频 | 无码av女优 | 成人午夜视频免费 | 欧美视频一区二区三区四区 | 性爱视频在线免费 | 亚洲日本欧美 | 激情久久一区二区 | 国产精品一区二区三区在线播放 | 又黄又爽免费无遮挡在线观看 | 色阁五月 | 久久久久国产成人免费精品免费 | 国产午夜精品一区二区三区免费 | 激情宗合 | 蜜桃网站在线观看 | 色阁av | 久久久国产精品免费观看 | 欧美高清视频一区 | 特级毛片a级毛片100免费 | 久久精品a一级国产免视看成人 | 精品国产一区二区亚洲人成毛片 | 国产一区二区三区手机在线 | 黄色一级毛片免费看 | 免费观看一级 | 日本高清一级片 | 精品国产欧美一区二区 | 欧美日韩精品中文字幕 | 超碰人人做人人爱 | 91免费在线看片 | 亚洲免费视频大全 | 一区二区三区在线观看av |