flask-socketio每个用户一个房间?昂贵?

时间:2015-02-23 10:22:15

标签: pandas flask socket.io gevent-socketio flask-socketio

我有一个运行pandas的烧瓶webapp,可以在后端进行一些数据分析。

现在,我采用了朴素的方法,使用AJAX让用户将查询发送回服务器并与数据进行交互。但事实证明每个请求都有很多开销,每次我需要将数据重新加载到pandas / memory中,这是非常重复的。

我认为socketio在这里很有用 - 我会打开一个套接字连接,这样一旦将文件加载到pandas中,用户就可以通过套接字以更少的开销响应性地交互和查询数据。 / p>

所以我现在的问题是:

  • 我是否应该为每个用户打开一个房间,因为用户不需要互相交流?
  • 这是否会扩大规模 - 为每个用户开放一个房间?
  • 命名空间在哪里适合?我是否将命名空间分配给网站的不同部分,并进一步为每个用户打开每个命名空间下的房间?
  • 或者我应该生成猴子修补的线程?每个用户的Greenlet?

1 个答案:

答案 0 :(得分:9)

每个用户打开一个房间是一个有效的解决方案,我通常建议这种解决方案可以轻松地在服务器推送的消息中解决个别用户。

房间保存在内存中的Python数据结构中,因此它们只是昂贵,因为它们使用一点内存。我没有测量每个用户的数量,但它可能只是房间名称上的几个字节。

命名空间用于将多个不同的连接复用到一个物理信道中。如果您只有一个连接,那么只需对所有内容使用相同的命名空间。例如,如果页面中有两个客户端应用程序(例如角度应用程序),每个应用程序都有自己的一组事件处理程序,则应使用多个名称空间。除此之外,没有理由使用多个命名空间。

希望这有帮助。