Неожиданное завершение работы цикла асинхронной функции

Написал код с использованием асинхронной функции, но после нескольких минут он завершает свой цикл, хотя не должен.

Пишу код для вытягивания расписания всех факультетов и столкнулся с такой проблемой. Возможно ли, что ошибка в большом количестве итераций (в одном факультете примерно 4000 записей) Вот сообщение, которое выходит:

 File "/home/sgtu_bot/microservice/main.py", line 88, in <module>
    asyncio.run(main())

  File "/usr/lib/python3.10/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)

  File "/usr/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete
    return future.result()

  File "/home/sgtu_bot/microservice/main.py", line 76, in main
    schedule = await get_schedule(group['ID'], week_number)

  File "/home/sgtu_bot/microservice/main.py", line 24, in get_schedule
    async with session.get(

  File "/usr/local/lib/python3.10/dist-packages/aiohttp/client.py", line 1141, in __aenter__
    self._resp = await self._coro

  File "/usr/local/lib/python3.10/dist-packages/aiohttp/client.py", line 560, in _request
    await resp.start(conn)

  File "/usr/local/lib/python3.10/dist-packages/aiohttp/client_reqrep.py", line 894, in start
    with self._timer:

  File "/usr/local/lib/python3.10/dist-packages/aiohttp/helpers.py", line 720, in __exit__
    raise asyncio.TimeoutError from None

asyncio.exceptions.TimeoutError

Буду признателен за помощь. Сам код:

   async with conn_pool.acquire() as conn:
        for number in numbers:
            current_number = number
        #for faculty in faculties.keys():
            for course in range(1, 7):
                groups = await get_groups(current_number, course)
                for group in groups:
                    for week_number in range(1, 49):
                        schedule = await get_schedule(group['ID'], week_number)
                        if len(schedule) != 0:
                            for dictionary in schedule:
                                async with conn.transaction():
                                    await insert_schedule(conn, dictionary, i)
                                    i += 1

    await conn_pool.close()


Ответы (1 шт):

Автор решения: eri

Смотрите стек вызовов. Тут явно аиохттп сваливается по таймауту (скорее всего сервер не отвечает на такое количество запросов ). Вам нужно поставить работу с внешкой в блоки try except и обернуть в while. Также стоит поставить какие-нибудь задержки для повторного запроса.

→ Ссылка