Asyncio обработка исключений, можно не собирать исключения?
У меня есть код, который делает некоторые вызовы API с asyncio
а также aiohttp
, Для некоторых URL asyncio вызовет исключение, поэтому я разрешаю ему вернуть его (с asyncio.gather(return_exceptions = True)
), поэтому он не прерывает цикл событий. Можно ли не собрать возвращенные исключения, поэтому он возвращает только те результаты, которые сработали? Или мне нужно потом почистить список вручную?
Это код:
import asyncio
import aiohttp
import ssl
import datetime as dt
limit = 30
start_epoch = int(dt.datetime(2018,7,1).timestamp())
end_epoch = int(dt.datetime.now().timestamp())
epoch_step = 40000
url_list = []
while True:
url = "https://api.pushshift.io/reddit/search/comment/?q=" + "Nestle" + "&size=" + str(limit) + "&after=" + str(start_epoch) + "&before=" + str(start_epoch + epoch_step)
url_list.append(url)
start_epoch += epoch_step
if start_epoch > end_epoch:
break
async def fetch(session, url):
async with session.get(url, ssl=ssl.SSLContext()) as response:
return await response.json()
async def fetch_all(urls, loop):
async with aiohttp.ClientSession(loop=loop) as session:
results = await asyncio.gather(*[fetch(session, url) for url in urls], return_exceptions=True)
return results
if __name__ == '__main__':
loop = asyncio.get_event_loop()
urls = url_list
htmls = loop.run_until_complete(fetch_all(urls, loop))
print(htmls)
и возвращает список, который выглядит примерно так:
[ContentTypeError("0, message='Attempt to decode JSON with unexpected mimetype: text/html'",), {'data': [{'author':...]