我已经开始使用带有Eventlet的Python中的Flask SocketIO进行大量工作,并且正在寻找处理并发请求/线程的解决方案。我已经看到gevent可以实现,但是如果我使用eventlet怎么办呢?
答案 0 :(得分:5)
eventlet Web服务器支持通过greenlet进行并发,与gevent相同。无需您执行任何操作,始终启用并发。
答案 1 :(得分:0)
您可以使用gunicorn
或其类似物在多个工作人员的生产模式下启动应用。
如上所述here:
gunicorn --worker-class eventlet -w 5 module:app
-w
之后的数字是工作人员数量,module
是您的烧瓶服务器模块,而app
是烧瓶应用程序(app = flask.Flask(__name__)
)。每个worker都是忙于处理传入请求的进程,因此您将拥有并发性。如果您的应用确实占用了大量时间,那么执行该任务的工作人员在执行此任务时将会反应迟钝。
注意:如果您以这种方式启动应用程序,if __name__ == '__main__':
部分将被忽略,您的模块似乎将被导入。在这种情况下,您不需要在模块中调用app.run