一个关于 tornado 完成耗时操作返回完成信号的问题

2018-08-14 16:29:17 +08:00
 dapengzhao

代码地址 https://paste.ubuntu.com/p/gwbrHVP5Gy/

1349 次点击
所在节点    问与答
3 条回复
111111111111
2018-08-14 16:57:06 +08:00
贴代码的方式好评


从你贴的代码来看请求阻塞的,所以如果只是你写的需求来说,在 for 循环下面写一行代码,这行代码执行的时候就是 15 个请求处理完成的时候…

不过这应该不是你想要问的,我猜是想知道服务端处理 15 个并发请求的耗时,如果这样的话,不需要服务端发信号通知,客户端是自己可以知道的

首先客户端使用异步 HTTP 客户端,这个 tornado 有提供,然后使用 gen.multi 等待这 15 个请求全部完成
dapengzhao
2018-08-20 14:42:38 +08:00
@111111111111 抱歉刚看到您的回复,是这样的,我的需求就是想问我该让 15 个阻塞的请求全部完成的时候才往下执行,也就是代码中打印 bbbbb...。 因为我在代码中加了 @tornado.web.asynchronous
@tornado.gen.coroutine
@run_on_executor()这几个装饰器所以请求已经变成异步非阻塞的了。所以代码执行情况是执行 text ()函数会马上打印 bbbbb..... 而 tornado 服务端会像开启五个线程一样一次出现 5 个 30 也就是计算结果 10 秒后再出现 5 个,直到全部请求处理完毕。
dapengzhao
2018-08-20 14:47:18 +08:00
@111111111111 公司的需求是我需要提供一个图片本地化的接口,由于一篇文章可能有许多图片,用户的等待时间就会比较长。过程是用户输入微信文章链接我抓取文章内容并且把本地化之后的文章内容返回给用户。目前的问题就是如果采用异步非阻塞的方式,我不知道该如何控制程序等到 tornado 接口把所有图片本地化之后再返回给用户。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/479718

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX