1

我正在使用 Python WSGI 框架 Falcon 来制作应用程序后端,并使用 Beaker 来处理会话管理。在生产中,我们将在 AWS 中使用 Gunicorn。

有一点我一直无法理解:

Gunicorn 将运行多个工作程序,这是否意味着环境变量对于发出请求的不同客户端仍然存在?换句话说,烧杯会话是否仅适用于一个客户端,或者它是否可用于在同一个 Gunicorn 工作实例中发出请求的多个客户端?

这就是我从阅读中理解会话的方式:

一个人登录到我的应用程序,并将 user_id 添加到与 Beaker 的会话中。来自同一客户端的未来请求将将此 user_id 存储在会话字典中。现在,来自该客户端的任何未来请求都将能够访问存储在会话中的变量。每个客户端都有自己的会话数据。

我是否正确理解了这一点?

当前的方法是在需要更多用户信息时向客户端(成功登录时)返回一个 id 以传递给后端。

4

1 回答 1

0

我是否正确理解了这一点?

是的,在大多数情况下,您确实如此。

Gunicorn 将运行多个工作程序,这是否意味着环境变量对于发出请求的不同客户端仍然存在?换句话说,烧杯会话是否仅适用于一个客户端,或者它是否可用于在同一个 Gunicorn 工作实例中发出请求的多个客户端?

烧杯将会话数据保存在服务器端,在由唯一会话 id 标识的专用数据存储中,客户端将通过 cookie 发回会话 id,然后服务器(gunicorn worker)可以检索会话数据。

我建议阅读有关会话如何工作的更详细说明,例如: http: //machinesaredigging.com/2013/10/29/how-does-a-web-session-work/

于 2016-12-05T06:57:57.497 回答