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