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':...]

0 ответов

Другие вопросы по тегам