在两个 Flask 服务器之间共享会话

Jas*_*son 7 python session flask socket.io flask-socketio

我有一个带有两个 Flask 服务器的后端。一种是处理所有 RESTfull 请求,另一种是 Flask-socketio 服务器。有没有办法在这两个应用程序之间共享会话变量(登录用户等)?如果这很重要的话,它们确实会在不同的端口上运行。

我如何理解它们在客户端会话 cookie 上工作的会话,所以这两个服务器不应该都有权访问该信息吗?如果是的话怎么办?如果没有,有没有办法达到同样的效果?

Mig*_*uel 5

有几种方法可以实现此目的,具体取决于您如何设置两台服务器。

最简单的解决方案是让两台服务器在同一域和端口上向客户端显示。例如,您可以将其作为 Socket.IO 服务器的根目录,以及访问 HTTP 服务器的www.example.com/socket.io任何其他 URL 。www.example.com为了实现这一点,你需要使用反向代理服务器,例如nginx。客户端不会直接连接到您的服务器,而是在单个端口上连接到 nginx,并且 nginx 配置为根据 URL 将请求转发到适当的服务器。

通过上述设置,两台服务器都向同一域上的客户端公开,因此会话 cookie 将发送到两台服务器。

如果您想让服务器与客户端分开显示,那么共享会话数据的一个好选择是切换到服务器端会话,存储在 Redis、memcache 等中。您可以使用 Flask-Session 进行设置。

希望这可以帮助!