龙卷风/异步Web服务器理论,如何处理运行时间更长的操作以利用异步服务器



我刚刚开始研究龙卷风和异步Web服务器。 在许多龙卷风的例子中,较长的请求由如下方式处理:

  1. 拨打龙卷风网络服务器
  2. 龙卷风对 API 进行异步网络调用
  3. 让龙卷风继续接受请求,而回调等待被调用
  4. 在回调中处理响应。服务器到用户。

因此,出于假设目的,用户正在向龙卷风服务器发出请求 /retrive . /retrieve 将向内部 API myapi.com/retrieve_posts_for_user_id/或 w/e 发出请求。 API 请求在获取请求时可能需要一秒钟才能运行,然后在最终返回 Tornado 服务器时响应。 首先,这种流动是使用龙卷风的"正常"方式吗?许多在线代码示例都会表明这一点。

其次,(这是我的想法开始变得混乱的地方)假设上述流程是标准流程,myapi.com应该是异步的吗?如果它不是异步的并且每个请求可能需要几秒钟,它不会产生与阻塞服务器相同的瓶颈吗? 也许龙卷风或任何异步的正常用例的示例将有助于阐明这个问题?谢谢。

是的,据我了解您的问题,这是龙卷风的正常用例。

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

最新更新