有哪些应用场景适合用python的gevent来完成
2 回答
炎炎设计
TA贡献1808条经验 获得超4个赞
一种技术的出现必然是为了解决某种问题,gevent是为了解决什么问题呢,设想下面这种情况。
你要做一个千人在线的Web聊天室,聊天室需要能够实时来收发消息,但是HTTP是无状态的,就是说服务器没有直接把消息发给浏览器的能力。你往服务器发送数据之后,服务器没法直接把你的消息推送给其他聊天室的人,但有若干方案可以解决这个问题。
这里假设我们采用常见的长轮询的方案,即客户端请求服务端获取最新的消息,服务器有消息就返回数据,否则将一直保持连接,直到超时。这时候,如果千人在线的话,就需要保持1000个连接,如果连接是进程模式或者线程模式,那就要开对应个数的进程或者线程,1000个进程或者线程的切换开销会消耗太多的资源。
你仔细分析这个聊天室的代码执行情况,会发现这么多的进程或者线程大部分时间都是闲的,它们在等浏览器发消息,啥事都没干。
针对这个问题,你可以想到,要一个进程在闲的时候去干其他的事情,等这边消息到了再回来处理就好了。gevent把这个功能实现了,切换开销大大降低,系统性能飙升。
添加回答
举报
0/150
提交
取消