1

所以我使用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 个用户提供服务,因此不需要扩展,也不需要对解决方案进行超优化。

4

0 回答 0