flask-socketio 每个用户一个房间?昂贵的?
flask-socketio one room per user ? expensive?
我有一个 flask webapp 运行 pandas 在后端做一些数据分析。
现在,我采用了天真的方法,即使用 AJAX 让用户将查询发送回服务器并与数据交互。但事实证明,每个请求都有很多开销,而且每次我都需要将数据重新加载到 pandas/memory 中,这是非常重复的。
我认为 socketio 在这里可能会有很好的用处 - 我会打开一个套接字连接,这样一旦文件被加载到 pandas,用户就可以以更少的成本更快地交互和查询数据通过套接字的开销。
所以我现在的问题是:
- 我是否应该为每个用户开一个房间,因为用户之间不需要互动?
- 这种规模 - 每个用户打开一个房间吗?
- 这里的命名空间在哪里?我是否将命名空间分配给网站的不同部分,并进一步在每个命名空间下为每个用户打开房间?
- 或者我应该生成一个猴子补丁线程吗?每个用户的 Greenlet ?
为每个用户打开一个房间是一种有效的解决方案,我通常会推荐这种解决方案,以便能够轻松地在服务器推送的消息中解决单个用户的问题。
房间保存在内存中的 Python 数据结构中,因此它们的开销仅在于它们使用了一点内存。我没有统计每个用户的数量,但它可能只是房间名称顶部的几个字节。
命名空间用于将多个不同的连接复用到一个物理通道中。如果您只有一个连接,则只需对所有内容使用相同的命名空间。例如,如果您的页面中有两个客户端应用程序(例如 angular 应用程序),您应该使用多个命名空间,每个应用程序都有自己的一组事件处理程序。除此之外,没有理由使用多个命名空间。
希望对您有所帮助。
我有一个 flask webapp 运行 pandas 在后端做一些数据分析。
现在,我采用了天真的方法,即使用 AJAX 让用户将查询发送回服务器并与数据交互。但事实证明,每个请求都有很多开销,而且每次我都需要将数据重新加载到 pandas/memory 中,这是非常重复的。
我认为 socketio 在这里可能会有很好的用处 - 我会打开一个套接字连接,这样一旦文件被加载到 pandas,用户就可以以更少的成本更快地交互和查询数据通过套接字的开销。
所以我现在的问题是:
- 我是否应该为每个用户开一个房间,因为用户之间不需要互动?
- 这种规模 - 每个用户打开一个房间吗?
- 这里的命名空间在哪里?我是否将命名空间分配给网站的不同部分,并进一步在每个命名空间下为每个用户打开房间?
- 或者我应该生成一个猴子补丁线程吗?每个用户的 Greenlet ?
为每个用户打开一个房间是一种有效的解决方案,我通常会推荐这种解决方案,以便能够轻松地在服务器推送的消息中解决单个用户的问题。
房间保存在内存中的 Python 数据结构中,因此它们的开销仅在于它们使用了一点内存。我没有统计每个用户的数量,但它可能只是房间名称顶部的几个字节。
命名空间用于将多个不同的连接复用到一个物理通道中。如果您只有一个连接,则只需对所有内容使用相同的命名空间。例如,如果您的页面中有两个客户端应用程序(例如 angular 应用程序),您应该使用多个命名空间,每个应用程序都有自己的一组事件处理程序。除此之外,没有理由使用多个命名空间。
希望对您有所帮助。