一、gevent简介
Python通过yield
提供了对协程的基本支持,但是不完全。而第三方的gevent为Python提供了比较完善的协程支持。
gevent是第三方库,通过greenlet实现协程,其基本思想是:
当一个greenlet遇到IO操作时,比如访问网络,就自动切换到其他的greenlet,等到IO操作完成,再在适当的时候切换回来继续执行。由于IO操作非常耗时,经常使程序处于等待状态,有了gevent为我们自动切换协程,就保证总有greenlet在运行,而不是等待IO。
gevent.spawn()
会创建一个协程并且运行
gevent.sleep()
会造成阻塞,切换到其他协程继续执行
gevent.joinall([])
会等待所有传入的协程运行结束后再退出
二、简单的实例
安装需要的模块:
pip install gevent-websocket
pip install gevent
pip install flask
代码实现:
from flask import Flask
from geventwebsocket import WebSocketError
from gevent.pywsgi import WSGIServer
from geventwebsocket.handler import WebSocketHandler
app = Flask(__name__)
users = set()
@app.route('/websocket/')
def handle_websocke