我是新手,对Gunicorn + Flask的工作原理有误解。
当我用4个worker运行Gunicorn时,它会创建4个Flask应用实例,还是会创建4个处理来自Nginx的web请求的进程和一个Flask应用实例?
如果我在我的应用中简单的实现内存缓存(比如字典),Gunicorn会不会创建多个应用实例,从而创建多个缓存实例?
它将创建4个Gunicorn Worker来处理一个Flask应用。如果你旋转一个flask应用的4个实例(例如使用docker),你将需要运行4次gunicorn。最后,为了处理所有这些flask实例,你将需要一个Nginx服务器在前面充当负载平衡器。
例如,如果一个用户正在做一个注册程序,由于对数据库的多次查询而花费了大量的时间,你仍然有另一个工作者将请求发送到flask实例。
我明白我们的观点,但Flask还没有准备好WSGI,这是标准的。Gunicorn在生产中扮演的是这个角色,所以你可以获得更多的可靠性,而不是使用附带的Develpment标准Werkzeug服务器。换句话说,Gunicorn只是你flask对象的一个包装器。它只是处理请求,让Flask做自己的事情。