我一直在使用Flask login module ,它在服务器上创建和维护 session 。
既然server维护了session,我觉得也不是完全无状态的。当应用程序有多个服务器时它是如何工作的。请求是否应该是粘性的(即给定 session 应该向特定服务器发出后续请求)?
最佳答案
您所做的陈述并不完全正确:
... which creates and maintains session on the server.
Flask-Login使用了Flask提供的session设施,所以它存储在session中的数据将由Flask使用配置的session存储机制写入。
默认情况下,Flask 在客户端将用户 session 写为安全 cookie,但也可以在服务器端进行 session 。比如这个snippet展示了如何配置 Flask 以在服务器端 Redis 存储上写入 session 。
当用户 session 存储在客户端 cookie 中时,很明显拥有多个服务器不是问题。 cookie 将被发送到处理每个请求的服务器,因此一切都会正常工作。
对于服务器端 session ,这也适用。服务器端 session 在唯一标识符下编写,然后将此唯一标识符存储在客户端 cookie 中。然后每个请求都带有 session ID,Flask 使用此 ID 加载 session 数据。如果您将所有 Web 服务器配置为使用相同的用户 session 存储,那么多个服务器可以毫无问题地处理来自同一客户端的请求。
关于python - 具有多个服务器的 Flask-login 如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19083705/