实时饲料中的龙卷风阻塞

时间:2012-11-15 05:31:56

标签: python mongodb tornado

在我的龙卷风应用程序中,我将让用户访问我的数据库并请求数据。由于我的应用程序正在根据此数据进行实时分析,因此每个客户端将在很长一段时间内连接到数据库。这会使应用程序阻塞吗?

那么如果我使用AsyncMongo会解决这个问题并使应用程序无阻塞?我希望同时用户使用该应用程序?否则,每个客户端在使用应用程序时都可能会阻塞几分钟。

将客户端连接到服务器中的mongodb的Handler是一个websocket。

我也会使用@ web.asynchronous gen装饰器吗?或者使用多处理是否更好?

我对此非常陌生,所以没有任何经验,但会考虑最容易接受和实施吗?

看一些示例/教程代码会很棒。

谢谢

1 个答案:

答案 0 :(得分:2)

>使应用程序阻止?

大概是什么使你的应用程序阻塞是你使用的框架:Django阻塞。龙卷风是非阻挡的。

> AsyncMongo

这是一个异步数据库驱动程序,但它已经过时并且有一段时间没有更新。使用它会使您的数据库调用异步。但是使用同步PyMongo可能会更好,因为它由10gen人员维护,并确保您的查询快速返回。 python有一个名为Motor

的新实验性异步库

> @ web.asynchronous gen装饰器

gen是一种使异步查询更易于阅读的方法。它与多处理无关

>架构&阻断

如果您继续阅读并将数据反馈给客户端,那么它会阻止。

  1. 不要使用Tornado
  2. 更改您的体系结构,以便不保持连接打开
  3. 使用AsyncMongo或Motor
  4. 等异步驱动程序