为了账号安全,请及时绑定邮箱和手机立即绑定

有哪些应用场景适合用python的gevent来完成

有哪些应用场景适合用python的gevent来完成

侃侃无极 2019-02-19 13:12:46
有哪些应用场景适合用python的gevent来完成
查看完整描述

2 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

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

查看完整回答
反对 回复 2019-03-02
  • 2 回答
  • 0 关注
  • 544 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信