Я пытаюсь вернуть код HTTP-запроса из списка URL-адресов асинхронно, используя этот код, который я нашел в Интернете, однако после нескольких распечаток я получаю сообщение об ошибке ClientConnectorError: Невозможно подключиться к хосту website_i_removed: 80 ssl: Нет [getaddrinfo fail],Поскольку веб-сайт действителен, я не понимаю, как он говорит, что не могу подключиться.Если я что-то делаю неправильно, пожалуйста, укажите мне правильное направление.
Последние несколько часов я искал документацию и онлайн для aiohttp, но у них нет примера HTTP-запросов сСписок URL-адресов и их начальная страница в документах довольно сложны, поскольку я новичок в асинхронном программировании.Ниже приведен код, который я использую, предположим, что urls - это список строк.
import asyncio
from aiohttp import ClientSession
async def fetch(url, session):
async with session.get(url) as response:
code_status = response.history[0].status if response.history else response.status
print('%s -> Status Code: %s' % (url, code_status))
return await response.read()
async def bound_fetch(semaphore, url, session):
# Getter function with semaphore.
async with semaphore:
await fetch(url, session)
async def run(urls):
tasks = []
# create instance of Semaphore
semaphore = asyncio.Semaphore(1000)
async with ClientSession() as session:
for url in urls:
# pass Semaphore and session to every GET request
task = asyncio.ensure_future(bound_fetch(semaphore, url, session))
tasks.append(task)
responses = asyncio.gather(*tasks)
await responses
loop = asyncio.get_event_loop()
future = asyncio.ensure_future(run(urls))
loop.run_until_complete(future)
Я ожидал, что каждый веб-сайт напечатает свой код запроса, чтобы определить, достижимы ли они, однако в нем говорится, что я не могу подключиться кнекоторые, несмотря на то, что я могу найти их в своем браузере.