aiohttp客户端连接错误,但是我可以在线找到网站吗?

时间:2019-07-09 18:12:58

标签: python asynchronous aiohttp

我正在尝试使用我在网上找到的代码从URL列表中异步返回HTTP请求代码,但是在打印几次后,我收到错误ClientConnectorError:无法连接到主机website_i_removed:80 ssl:无[getaddrinfo失败] 。由于该网站有效,因此我对无法连接表示困惑。如果我在任何时候做错了,请指出正确的方向。

过去几个小时,我一直在在线上查找aiohttp的文档,但他们没有HTTP请求示例以及网址列表,而且由于我是异步编程全新的。下面是我正在使用的代码,假设url是字符串列表。

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)

我希望每个网站都可以打印其请求代码,以确定它们是否可以访问,但是它说尽管可以在浏览器中查找它们,但我无法连接到某些请求。

0 个答案:

没有答案