Python Flask SocketIO一次只执行一个请求

Python Flask SocketIO一次只执行一个请求,python,flask,socket.io,flask-socketio,eventlet,Python,Flask,Socket.io,Flask Socketio,Eventlet,我简单的flask socketIO应用程序,但一次只有一个请求在执行“write_message”方法。 我使用的是eventlet(),根据文档,它可以处理并发请求 socketio = SocketIO(app) @socketio.on('write-message', namespace='/message') def write_message(data): //long task if __name__ == '__main__': print("Starti

我简单的flask socketIO应用程序,但一次只有一个请求在执行“write_message”方法。 我使用的是eventlet(),根据文档,它可以处理并发请求

socketio = SocketIO(app)

@socketio.on('write-message', namespace='/message') 
def write_message(data):
    //long task

if __name__ == '__main__':
    print("Starting socket app on port 5000")
    socketio.run(app, host='0.0.0.0', port=5000)

在这个漫长的任务中,你所做的实际上是关键。Eventlet是一个协作多任务框架,因此您需要每个任务释放CPU以允许其他任务运行。如果长任务没有释放CPU,那么其他任务将无法同时运行


使用eventlet在长任务中释放CPU的常用方法是经常调用
socketio.sleep(0)
。如果这是您的长期任务,请将其添加到您的循环中。

谢谢您的回答。我正在运行深度学习模型,可能需要几秒钟。我添加了“socketio=socketio(app,async_mode=“eventlet”)”。eventlet是否具有最大请求数配置。
you can use gunicorn gevent to serve socket application . as per documentation.

"gunicorn -k geventwebsocket.gunicorn.workers.GeventWebSocketWorker -w 1 module:app"


https://flask-socketio.readthedocs.io/en/latest/