Flask Socketio 当服务端在处理客户端的socket请求时,同一客户端的http请求会一直pending的解决方法。

在Window环境下,使用 Flask-socketio 的时候,同时使用了 Flask-restful Api库,当时遇到了一个问题,客户端通过 websocket 连接上了服务器,并且在处理 websocket 请求时,客户端通过 http请求 访问静态资源,这时 http请求 出现pending状态,解决办法如下:

def create_app():
    app = Flask(__name__, static_folder="static", static_url_path="/static", template_folder="templates")
    app.config["SECRET_KEY"] = config["secret_key"]

    socket = SocketIO()
    # 这里的 async_mode 是关键
    socket.init_app(app, cors_allowed_origins="*", async_mode="threading")

此时 socketio 与 http 请求都不会相互阻塞。

更多推荐