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 请求都不会相互阻塞。