5

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

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

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

所以我现在的问题是:

  • 我应该为每个用户打开一个房间,因为用户不需要相互交互吗?
  • 这是否按比例为每个用户开放一个房间?
  • 命名空间在哪里适合?我是否将命名空间分配给网站的不同部分,并在每个命名空间下为每个用户进一步打开房间?
  • 或者我应该产生一个猴子补丁线程吗?每个用户的 Greenlet ?
4

1 回答 1

9

为每个用户打开一个房间是一种有效的解决方案,我通常推荐它作为一种能够轻松地在服务器推送消息中解决单个用户的方法。

这些房间保存在内存中的 Python 数据结构中,因此它们的成本很高,因为它们使用了一点内存。我没有测量每个用户的数量,但它可能只是房间名称顶部的几个字节。

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

希望这可以帮助。

于 2015-02-24T15:23:19.860 回答