官方其实已经给出了方案,只不过藏的有点深,在加上网上有很多不太靠谱的帖子误导了我(当然不排除我没理解的原因哈)。所以为了让有些朋友的少走点弯路,也为给自己做个备忘。
完整代码:https://github.com/wskssau/my_notespace的 python/todo_app
解决方案: flask+gevent
安装gevent
1
|
pip install gevent |
修改代码
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
34
|
# 文件头部 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/在做耗时任务时不会影响其他请求
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/danny_amos/article/details/50859383