Ошибка подключения клиента aiohttp, однако я могу найти веб-сайт просто отлично? - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь вернуть код 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)

Я ожидал, что каждый веб-сайт напечатает свой код запроса, чтобы определить, достижимы ли они, однако в нем говорится, что я не могу подключиться кнекоторые, несмотря на то, что я могу найти их в своем браузере.

...