Tornado / Async Webserver理论,如何处理更长时间运行的操作以利用异步服务器

时间:2012-04-20 12:47:29

标签: python asynchronous tornado

我刚开始看龙卷风和异步网络服务器。在龙卷风的许多示例中,较长的请求由以下内容处理:

  1. 拨打龙卷风网络服务器
  2. tornado对api进行异步Web调用
  3. 让龙卷风继续接听请求,同时回叫等待被召唤
  4. 处理回调中的响应。服务器到用户。
  5. 因此,出于假设目的,用户正在/retrive向龙卷风服务器发出请求。 /retrieve会向内部API myapi.com/retrieve_posts_for_user_id/或w / e发出请求。在获取请求时,api请求可能需要一秒钟才能运行,然后当它最终返回龙卷风服务器响应时。 首先,这种流程是使用龙卷风的“正常”方式吗?在线的许多代码示例都是如此。

    其次,(这是我的思绪开始变得难以理解的地方)假设上述流程是标准流程,myapi.com应该是异步的吗?如果它不是异步并且请求可能需要几秒钟,那么阻塞服务器会产生同样的瓶颈吗?也许龙卷风或任何异步的正常用例的例子有助于揭示这个问题?谢谢。

1 个答案:

答案 0 :(得分:2)

是的,正如我理解你的问题,这是Tornado的正常用例。

如果对您的Tornado服务器的所有请求都向myapi.com发出请求,并且myapi.com被阻止,那么是的,myapi.com仍然是瓶颈。但是,如果只有一些请求必须由myapi.com处理,那么Tornado仍然是一个胜利,因为它可以在等待myapi.com请求的响应时继续处理此类请求。但无论如何,如果myapi.com无法处理负载,那么将Tornado服务器放在它前面就不会有神奇的解决方法。不同之处在于,即使myapi.com忙,您的Tornado服务器仍然可以响应请求。