假设我有一个asyncio协程,它获取一些数据并返回。
async def fetch_data(*args):
result = await some_io()
return result
基本上,这个协程是从协程链中调用的,初始协程是通过创建一个任务来运行的。但是,如果为了测试的目的,我只想在运行某个文件时运行一个协程,该怎么办?
if __name__ == '__main__':
result = await fetch_data(*args)
print(result)
显然我不能这么做,因为我正在运行并等待非协程函数的协程,所以问题是:有没有什么正确方法可以从协程中获取数据而不调用它的函数?我可以为result
创建一些Future
对象并等待它,但也许还有其他一些更简单、更清晰的方法?
2条答案
按热度按时间nue99wik1#
你需要创建一个事件循环来运行你的协程:
或作为函数:
这样使用:
或者:
72qzrwbm2#
对于Python 3.7+,可以使用
asyncio.run()
: