我需要在龙卷风请求处理程序中异步进行多个 http 调用。
试图返回期货没有得到很好的记录,并且在龙卷风的处理程序级别收集的 asyncio.gather 上几乎不可能做到。
我试过 aiohttp ,它本身工作正常,但是当把它放在龙卷风处理程序中时,它抛出的循环已经在使用中。如果你能告诉我如何向 IOLoop 注入一些新的未来来解决,那就太好了。
我也尝试过使用AsyncHTTPClient与文档相反的龙卷风,它实际上并不使用 yield 而是在您使用 await 时返回响应。
是否有任何关于此的最新文档?所有示例都不适用于多个异步请求。
根据本文档http://www.tornadoweb.org/en/stable/gen.html#module-tornado.gen
@gen.coroutine
def get(self):
http_client = AsyncHTTPClient()
response1, response2 = yield [http_client.fetch(url1),
http_client.fetch(url2)]
response_dict = yield dict(response3=http_client.fetch(url3),
response4=http_client.fetch(url4))
response3 = response_dict['response3']
response4 = response_dict['response4']
但是,当我自己尝试这样做时,yield 会引发错误,将其替换为 await 会得到结果。但是你不能像 yield 这样的 dict 对象等待。我怎样才能解决这个问题?
蟒蛇 3.6.7 龙卷风 5.1.1 aiohttp 3.5.4
青春有我
相关分类