Flask+gevent 实现异步请求处理
使用flask+gevent实现异步请求处理,首先gevent库要使用猴子布丁,使底层I/O支持异步处理。
1 使用猴子补丁
python
from gevent import monkey
monkey.patch_all()
使用猴子补丁后, 内建函数time.sleep()
已经魔改成gevent.sleep()
, 这两个函数的效果是一样的。
2 相同的url请求无法实现异步处理
例如同时发出的两个请求,url相同是不可能实现异步处理的。
req1: /api/v2.1/test
req2: /api/v2.1/test
url不同的情况, 如下
req1: /api/v2.1/test
req2: /api/v2.1/test?s=1
或
req1: /api/v2.1/test
req2: /api/v2.1/test2
有可能实现网络请求的异步处理。
3 url请求处理中包含异步函数
在url请求的处理代码中包含异步函数。 例如
python
time.sleep(0.1)
gevent.sleep(0.2)