我如何解决异步龙卷风获取未来错误

How do i resolve Async tornado fetching future error

我正在尝试使用 AsyncHTTPClient 从已在端口 6000 运行 的本地服务 Get/Post。

但我不断收到错误 RuntimeError: Task got bad yield:

ps。我正在使用 tornado 4.4.2,此错误已在最新版本中修复,但我如何在 4.4.2 中执行此操作?请帮忙!

import tornado.ioloop
from tornado.httpclient import AsyncHTTPClient
import asyncio
import tornado
import urllib
from datetime import datetime
import time

async def client(url):
    http_client = AsyncHTTPClient()
    response = await http_client.fetch(url)
    return response.body

async def main():
    http_client = AsyncHTTPClient()
    url = "http://localhost:6000/listings"
    result = await client(url)
    print(result)

if __name__ == "__main__":
    result = asyncio.run(main())
    print(result)
    print(int(time.time() * 1e6))

不能使用 asyncio Tornado 5.0 之前的版本。

使用 Tornado 自己的 ioloop 来 运行 你的程序:

from tornado import ioloop

if __name__ == "__main__":
    result = ioloop.IOLoop.current().run_sync(main)
    

更新: 上面的解决方案可以正常工作,但是,如果你愿意,你 可以 将 asyncio 与 Tornado 4.x.参见:tornado.platform.asyncio.AsyncIOMainLoop.