Здравствуйте. Необходимо пройтись по массиву, выполняющему определенные действия в том числе, http запрос и обработку его ответа. Запрос занимает достаточно много времени - ресурсы простаивают. Посоветовали asyncio / aiohttp, но не могу ни как разобраться, что там и к чему.
Вот условный код на данный момент:
def checkUrl(url):
headers = {
'host': "host.com",
'key': "23rn23rnn2rn23nr23nnr32rn23nrnn2"
}
response = requests.request("GET", "https://host.com/api/v2", headers=headers, params={"url": url}).json()
return response["result"]
json = []
for mess in Array["response"]["items"]:
json.append("str", "str", checkUrl(mess["url"]))
Нашел такой пример, но ни как не могу понять, что там происходит. Возможно ли сделать запрос, подставив заголовки? (через библиотеку requests)
import aiohttp
import asyncio
async def fetch(session, url):
async with session.get(url) as response:
return await response.text()
async def main():
urls = [
'http://python.org',
'https://google.com',
'http://yifei.me'
]
tasks = []
async with aiohttp.ClientSession() as session:
for url in urls:
tasks.append(fetch(session, url))
htmls = await asyncio.gather(*tasks)
for html in htmls:
print(html[:100])
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
Так же при попытках вывести что-то, кроме await response.text(), ругается. Прокомментируйте код хотя бы, если не сложно...