Asyncio と aiohttp ライブラリを使用して一連のリクエスト (~1000) を作成しようとしていますが、多くの情報が見つからないという問題が発生しています。
このコードを 10 個の URL で実行すると、問題なく動作します。100以上の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()
スタック トレースはここにあります。
私はこれについて数時間頭を悩ませてきたので、どんな助けや洞察も大歓迎です。明らかに、これはまだ開いているはずのイベントループが閉じられたことを示唆していますが、それがどのように可能かわかりません。