【问题标题】:How do i resolve Async tornado fetching future error我如何解决异步龙卷风获取未来错误
【发布时间】:2021-05-28 14:36:37
【问题描述】:

我正在尝试使用 AsyncHTTPClient 从已在端口 6000 上运行的本地服务获取/发布。

但我不断收到错误 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))

【问题讨论】:

    标签: asynchronous tornado


    【解决方案1】:

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

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

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

    更新:上述解决方案可以正常工作,但是,如果您愿意,可以在 Tornado 4.x 中使用 asyncio。请参阅:tornado.platform.asyncio.AsyncIOMainLoop

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-30
      • 1970-01-01
      • 2018-12-24
      • 1970-01-01
      • 2017-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多