Вот например:
async def parse_base_ref(url):
"""функция получает страницу по url, берет оттуда ссылки, получает с данные с этих страниц, обрабатывает их и дает
результат"""
# *обработка url*
res = await asyncio.gather(parse_inner_url(new_url1), parse_inner_url(new_url2), parse_inner_url(new_url3))
# *обработка полученных данных
async def parse_inner_url(new_url):
"""получает страницу по url, находит в ней какие-то данные и возвращает их"""
res = await parse(new_url)
return res
async def main():
await asyncio.gather(parse_base_ref(url1), parse_base_ref(url2), parse_base_ref(url3))
Нормальна ли подобная ситуация, когда корутина, которую мы запускаем в main, начинает планировать другие наши корутины? Для этого примера в частности и для других, когда количество вызовов подряд может быть больше.
Или лучше сделать возврат значений на каждом этапе, а потом передавать их в следующие функции, добавляя tasks только в функции main?