先贴代码
import time
from tornado.gen import coroutine
from tornado.httpclient import AsyncHTTPClient
from tornado.ioloop import IOLoop
from tornado.web import Application, RequestHandler
class MainHandler(RequestHandler):
@coroutine
def get(self):
client = AsyncHTTPClient()
urls = ['http://www.baidu.com'] * 20
start = time.time()
yield [client.fetch(url) for url in urls]
print(time.time() - start)
def make_app():
return Application([(r"/", MainHandler), ])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
IOLoop.current().start()
我通过浏览器访问http://localhost:8888/,get方法中请求了相同的链接50次,但是发现所花费的时间是所有请求耗时的总和。百度了发现请求相同的链接会阻塞,但是没找到解决方案。
试了在链接后面加上不同的参数,结果还是阻塞的。
请问各位大佬有解决方案吗?