我对此很陌生,误解了Gunicorn + Flask的工作原理。
当我使用4名工作人员运行Gunicorn时,它会创建我的Flask应用程序的4个实例,或者它将创建4个处理来自Nginx和Flask应用程序实例的Web请求的进程?
如果我在我的应用程序中简单地实现了内存缓存(例如字典),那么gunicorn会创建多个app实例,因此会创建多个缓存实例吗?
答案 0 :(得分:7)
它将创建4名枪炮工人来处理一个烧瓶应用程序。如果你旋转一个烧瓶应用程序的4个实例(例如用docker)你将需要运行gunicorn 4次。要处理所有这些烧瓶实例,你需要一个Nginx服务器作为负载均衡器。
例如,如果一个用户正在执行一个注册例程,由于对数据库的多次查询需要花费大量时间,那么仍然有另一个工作人员将请求发送到flask实例。
我明白了我的观点,但Flask并没有准备好WSGI,这是标准。 Gunicorn在生产中扮演着这个角色,因此您可以获得更高的可靠性,而不是使用随附的Develpment标准Werkzeug服务器。换句话说,Gunicorn只是你烧瓶对象的包装。它只是处理请求,让Flask做它的事情。