У меня есть некоторый код, где у меня есть несколько ссылок и некоторые сопровождающие ярлыки. Мне нужно убедиться, что метки, ссылки и ответы от получения ссылок все остаются связанными (например, список в списке списков, список кортежей и т. Д. c.)
Поскольку Asyncio действует асинхронно, если я правильно понимаю, собранные результаты извлеченных hrefs могут быть возвращены в другом порядке, чем они были отправлены. Это будет означать, что мои отрендеренные страницы будут потенциально не в порядке с моими метками, если я попытаюсь обработать их после возвращения визуализации страницы. Я правильно понимаю?
Пример:
href_list = ['www.google.com', 'www.yahoo.com', 'www.amazon.com']
names_list = ['Google','Yahoo','Amazon']
zipped_list = list(zip(href_list,names_list))
async def fetch_href(session, href):
response = await session.request(method='GET', url=href)
return await response.text()
async with aiohttp.ClientSession() as session:
page_results = await asyncio.gather(*(fetch_href(session, href)
for i, href in enumerate([item[0] for item in zipped_list])))
#page_results may have html in a different order than the hrefs and labels in zipped_list
#because of asyncronous behavior of the function (?) e.g:
# page_results == [amazon_html, google_html, yahoo_html]
#if I try to zip with zip_list or components the html results would be out of order with
#hrefs and labels
Насколько я понимаю, элементы page_results
могут не соответствовать порядку hrefs
и names
в zipped_list
потому что эти отдельные запросы могут быть возвращены в другом порядке.
Каков наилучший способ сохранить href, name и page page все связанные друг с другом?
Спасибо.