我试图使用Asyncio和aiohttp库发出一系列请求(~1000),但我遇到了一个无法找到太多相关信息的问题.
当我用10个URL运行这段代码时,它运行得很好.当我使用RuntimeError: Event loop is closed
多个URL运行它时,它会中断,并给出RuntimeError: Event loop is closed
个错误.
import asyncio
import aiohttp
@asyncio.coroutine
def get_status(url):
code = '000'
try:
res = yield from asyncio.wait_for(aiohttp.request('GET', url), 4)
code = res.status
res.close()
except Exception as e:
print(e)
print(code)
if __name__ == "__main__":
urls = ['https://google.com/'] * 100
coros = [asyncio.Task(get_status(url)) for url in urls]
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(coros))
loop.close()
堆栈跟踪可以在here处找到.
任何帮助或见解都将不胜感激,因为我已经为此绞尽脑汁几个小时了.显然,这意味着一个事件循环已经关闭,应该仍然是开放的,但我不认为这是可能的.