python3 - 从异步方法获取结果
Posted
技术标签:
【中文标题】python3 - 从异步方法获取结果【英文标题】:python3 -Get result from async method 【发布时间】:2017-05-18 13:02:19 【问题描述】:我是 Python 的新手。我使用 asyncio 编写了一个简单的报废程序。这是我的代码sn-ps
loop = asyncio.get_event_loop()
task = loop.create_task(conSpi.parse(arguments.url))
value = loop.run_until_complete(asyncio.wait([task]))
loop.close()
我想打印返回值的结果。而是打印变量的 值,它会打印类似这样的内容
<Task finished coro=<ConcurrentSpider.parse() done,
defined at /home/afraz/PycharmProjects/the-lab/concurrentspider.py:28> result=3>
`
我怎样才能只得到结果而不打印其余部分?
【问题讨论】:
【参考方案1】:最简单的方法是写
value = loop.run_until_complete(task)
仅当您想等待一项任务时才有效。 如果您需要多个任务,则需要正确使用 asyncio.wait。 它返回一个包含已完成和未决期货的元组。但默认情况下,挂起的期货将是空的,因为它会等待所有期货完成。
类似
done, pending = loop.run_until_complete(asyncio.wait( tasks))
for future in done:
value = future.result() #may raise an exception if coroutine failed
# do something with value
【讨论】:
以上是关于python3 - 从异步方法获取结果的主要内容,如果未能解决你的问题,请参考以下文章
async python - 从引发AssertionError获取正确的参数