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

标签 python asynchronous tornado

我刚刚开始研究 Tornado 和异步网络服务器。在 Tornado 的许多示例中,较长的请求是通过以下方式处理的:

  1. 调用tornado网络服务器
  2. tornado 对 api 进行异步网络调用
  3. 让tornado在回调等待调用时继续接受请求
  4. 处理回调中的响应。服务器到用户。

因此,出于假设目的,假设用户正在 /retrive 向tornado 服务器发出请求。 /retrieve 将向内部 api myapi.com/retrieve_posts_for_user_id/ 或 w/e 发出请求。 api 请求在获取请求时可能需要一秒钟才能运行,然后当它最终返回 Tornado 服务器响应时。 首先,这个流程是使用 Tornado 的“正常”方式吗?网上的许多代码示例都会这么建议。

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

最佳答案

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

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

关于python - Tornado/异步 Web 服务器理论,如何处理长时间运行的操作以利用异步服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10246539/

相关文章:

python - 如何在mininet中使用miniedit?任何人都可以建议命令

javascript - fs.readFile 非常慢,我是否发出了太多请求?

asynchronous - Polly 的 Policy.TimeoutAsync 在异步上下文中不适用于 PolicyWrap

python - Tornado不显示静态文件

python - 在python中从表转换为矩阵

python - 如何检查路径是现有的常规文件而不是目录?

node.js - 在 Nodejs 中编写异步 http 返回

python - 为什么在 Tornado 服务器 Post 方法中创建线程会出现运行时错误?

python - 如果我将文件描述符限制设置为很大的数字,会有什么缺点?

python - 当应用 jwt auth 包装器时,Flask-cors 包装器不起作用。