所以我使用Flask_Socket来尝试在 Flask 上实现一个 websocket。使用它,我希望在数据发生变化时通知所有连接的客户端。这是我的routes/index.py
. 我遇到的问题是,当打开 websocket 连接时,它将一直处于notify_change
循环中,直到套接字关闭,与此同时,其他路由/users
无法访问。
from flask_sockets import Sockets
sockets = Sockets(app)
@app.route('/users',methods=['GET'])
def users():
return json.dumps(get_users())
data = "Some value" # the piece of data to push
is_dirty = False # A flag which is set by the code that changes the data
@sockets.route("/notifyChange")
def notify_change(ws):
global is_dirty, data
while not ws.closed:
if is_dirty:
is_dirty = False
ws.send(data)
这似乎是本质上的正常结果,while True:
但是,我一直在网上寻找一种方法来解决这个问题,同时仍在使用flask_sockets
并且没有任何运气。我在 GUnicorn 上运行服务器
flask/bin/gunicorn -b '0.0.0.0:8000' -k flask_sockets.worker app:app
我尝试通过做添加线程--threads 12
但没有运气。
注意:我一次最多只能为 4 个用户提供服务,因此不需要扩展,也不需要对解决方案进行超优化。