2012-11-15 83 views
0

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

所以,如果我使用AsyncMongo会解决这个问题,并使应用程序非阻塞?我希望同时使用该应用程序的用户?否则,每个客户端在使用该应用程序时可能会被阻止几分钟。

将客户端连接到服务器中的mongodb的处理程序是一个websocket。

我会使用@ web.asynchronous gen修饰器吗?还是使用多处理更好?

我对此很新,所以没有任何经验,但会看最容易接受和实施?

很高兴看到一些示例/教程代码。

谢谢

回答

2

>使应用程序阻塞?

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

> AsyncMongo

这是一个异步DB驱动程序,但它是旧的,有一段时间一直没有更新。使用它可以使数据库调用异步。但它可能会更好地使用由10gen人维护的同步PyMongo,并确保您的查询快速返回。有一个用于Python的新的实验异步库调用Motor

> @ web.asynchronous的创装饰以及

的根是使你的异步查询更容易阅读的方式。这是无关的多处理

>建筑&阻止

如果你继续阅读和数据反馈给客户,然后是它会阻止。无论是

  1. 不使用龙卷风
  2. 更改您的架构,使您的响应连接不保持开放
  3. 使用或异步驱动器就像AsyncMongo电机
+0

谢谢......至于我使用PyMongo一个客户端可以访问数据库,但是当尝试打开另一个客户端浏览器时,似乎该应用程序被阻止。我使用tornado.websocket.WebSocketHandler保持连接打开,数据不断从mongodb读取并发送到客户端。所以,如果我使用'电机',那么这会防止这个问题? PyMongo不让我这样做。 – user94628

+0

我想我会尝试使用Mongo的电机驱动程序...现在似乎具有pymongo的大部分功能,因此希望可以直接并入。我认为我的应用程序和一般使用Tornado的问题是,尽管Tornado非阻塞,但如果使用非阻塞的库eg.PyMongo,那么它会使Tornado的这一方面变得冗余。 – user94628