【发布时间】:2017-03-06 12:46:33
【问题描述】:
在以下代码中返回异步值之前是否需要loop.close()?
import asyncio
async def request_url(url):
return url
def fetch_urls(x):
loop = asyncio.get_event_loop()
return loop.run_until_complete(asyncio.gather(*[request_url(url) for url in x]))
也就是说,fetch_urls 应该变成这样吗?:
def fetch_urls(x):
loop = asyncio.get_event_loop()
results = loop.run_until_complete(asyncio.gather(*[request_url(url) for url in x]))
loop.close()
return results
如果需要loop.close(),那么如何在不引发异常的情况下再次调用fetch_urls:RuntimeError: Event loop is closed?
previous post 指出关闭循环并开始新循环是一种很好的做法,但它没有指定如何打开新循环?
【问题讨论】:
-
为了完整起见,您可以通过调用
asyncio.new_event_loop()来启动新的事件循环。
标签: cpython