如何解决如何使用 gevent 等待 threading.Condition
我正在编写基于 Flask 的 WebSocket 应用程序。 我的试用代码如下。
Observable<[string,number]>
如果我将
import json
import datetime
import time
import time
import gevent
from gevent.pywsgi import WsgiServer
from geventwebsocket.handler import WebSocketHandler
from flask import Flask,request,render_template
app = Flask(__name__)
app.config.from_object(__name__)
@app.route('/')
def index():
return "Hello"
@app.route('/pipe')
def pipe():
print("Entry")
if request.environ.get('wsgi.websocket'):
ws = request.environ['wsgi.websocket']
while True:
gevent.sleep(1)
# time.sleep(1)
datetime_Now = datetime.datetime.Now()
data = {
'time': str(datetime_Now),'message': "Hello"
}
ws.send(json.dumps(data))
print(data)
print("Exit")
return ''
if __name__ == '__main__':
app.debug = True
host = 'localhost'
port = 8080
host_port = (host,port)
server = WsgiServer(
host_port,app,handler_class=WebSocketHandler
)
server.serve_forever()
替换为 gevent.sleep()
,那么对该 Flask 应用程序的整个 HTTP 请求都会被阻止,因为 time.sleep()
永远不会产生 WsgiServer,而 time.sleep()
会这样做。
现在我想等待 threading.Condition 而不是专门的睡眠时间。 在等待 threading.Condition 时有什么好的方法可以产生 gevent 吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。