我刚刚开始研究龙卷风和异步Web服务器。 在许多龙卷风的例子中,较长的请求由如下方式处理:
- 拨打龙卷风网络服务器
- 龙卷风对 API 进行异步网络调用
- 让龙卷风继续接受请求,而回调等待被调用
- 在回调中处理响应。服务器到用户。
因此,出于假设目的,用户正在向龙卷风服务器发出请求 /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 服务器仍然能够响应请求。