3

Tornado 是非阻塞的网络服务器。

但是,所有操作都在单个线程中运行。如果它由单线程处理,它如何保持非阻塞?

如果有一个长操作,它会阻止新的请求吗?

从 Tornado 下载大文件是一个漫长的阻塞过程吗?

如果我的理解不准确,请纠正我。

非常感谢

4

1 回答 1

2

如果有一个长操作,它会阻止新的请求吗?

是的。不,这取决于。

Tornado 内部发生的任何事情都会阻止。因此,如果您执行“time.sleep(10)”或执行计算密集型操作,它将阻塞。

Tornado(以及 Twisted 和 node.js)可以做得很好的是从另一个服务(如 Amazon、Facebook、或子进程或具有异步库的数据库)请求数据,然后在等待回复时为其他请求提供服务。请参阅http://www.tornadoweb.org/documentation/overview.html#non-blocking-asynchronous-requests

为此,您需要前面的服务器也是异步的(所以是 Nginx,而不是 Apache)。

于 2012-08-21T07:26:27.427 回答