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获取正确的参数

python3 异步-协程版:常用高德方法总结

如何从 ISO 8061 字符串日期时间派生以获取 Python3 中的时区名称? [复制]

Python asyncio 模块

如何从同步代码 Python 中调用异步函数

Python3 学习字典的所有用法