有关龙卷风httpserver和httpclient的一些问题

时间:2016-11-17 16:45:46

标签: tornado

问题1:

tornado.httpserver是一个非阻塞的http服务器。是否有阻止http服务器?

问题2:

异步是否总是意味着非阻塞?同步总是意味着阻塞吗?

问题3:

tornado.curl_httpclient和tornado.simple_httpclient都是非阻塞的,又名异步的吗?

1 个答案:

答案 0 :(得分:1)

问题1:是的,Flask和Django以及SimpleHTTPServer用Python编写的其他多线程HTTP服务器是"阻塞"。如果编写使用其中一个服务器来实现HTTP服务器应用程序的代码,则代码将不会使用" yield"或"等待"或回调以实现其逻辑。

问题2:学生会说"同步"和"阻止"是不同的,并且"异步"和"非阻塞"是不同的。我希望他们中的一些人能够回答这个问题。但是,它们实际上是可以互换的想法:同步和阻塞是同义词,异步和非阻塞是同义词。

问题3:正如文档所说,tornado.simple_httpclient.AsyncHTTPClient is non-blocking和CurlHTTPClient一样。我建议you read Tornado's docs about async,它包括同步和异步的定义,以及同步和异步HTTP客户端的代码示例。