aiohttp-исключение игнорируется сообщение
Я Запускаю следующий код, который делает 5 запросов через aiohttp:
import aiohttp
import asyncio
def fetch_page(url, idx):
try:
url = 'http://google.com'
response = yield from aiohttp.request('GET', url)
print(response.status)
except Exception as e:
print(e)
def main():
try:
url = 'http://google.com'
urls = [url] * 5
coros = []
for idx, url in enumerate(urls):
coros.append(asyncio.Task(fetch_page(url, idx)))
yield from asyncio.gather(*coros)
except Exception as e:
print(e)
if __name__ == '__main__':
try:
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
except Exception as e:
print(e)
выход:
200
200
200
200
200
Exception ignored in: Exception ignored in: Exception ignored in: Exception ignored in: Exception ignored in:
Примечание: нет никакой дополнительной информации о том, что/где исключение.
что вызывает это и есть ли какие-либо советы по его отладке?
1 ответов
Я не совсем уверен, почему, но кажется, что оставляя aiohttp.ClientResponse
открыть объект вызывает исключение unraisable быть брошенным, когда интерпретатор завершает работу. В моей системе это приводит к таким предупреждениям, а не к" исключению, игнорируемому в " сообщениях:
sys:1: ResourceWarning: unclosed <socket object at 0x7f44fce557a8>
sys:1: ResourceWarning: unclosed <socket object at 0x7f44fce55718>
sys:1: ResourceWarning: unclosed <socket object at 0x7f44fcc24a78>
sys:1: ResourceWarning: unclosed <socket object at 0x7f44fcc248c8>
sys:1: ResourceWarning: unclosed <socket object at 0x7f44fcc24958>
sys:1: ResourceWarning: unclosed <socket object at 0x7f44fcc249e8>
sys:1: ResourceWarning: unclosed <socket object at 0x7f44fcc24b08>
в любом случае, вы можете исправить это путем явного закрытия