ClientConnectorCertificateError

Я получаю ошибку. В чем причина этой ошибки. Я пытаюсь перехватить данные из api с помощью асинхронной функции, и возникает эта ошибка.

ClientConnectorCertificateError at /. Невозможно подключиться к хосту swapi.dev:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1091)')]

>
async def index(request):
    start_time = time.time()
    url = 'https://swapi.dev/api/starships/9/'
    async with aiohttp.ClientSession() as client:
        task = asyncio.ensure_future(fetch(client, url))
        results = await asyncio.gather(task)
        total = time.time() - start_time
        print(total)
    return render(request, 'index.html', {'results':results })

Вы, скорее всего, запрашиваете API, у которого нет проверенного ssl-сертификата. По умолчанию большинство библиотек, выполняющих http вызов, проверяют действительность указанного сертификата и выдают предупреждение или ошибку, если не могут его проверить. Это настраиваемое поведение, в вашем случае я думаю, что если вы сделаете:

connector=aiohttp.TCPConnector(ssl=False)

Вы сможете отключить проверку на наличие действительного ssl-сертификата. Таким образом, ваш код будет выглядеть следующим образом:

async def index(request):
start_time = time.time()
url = 'https://swapi.dev/api/starships/9/'
async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(ssl=False)) as client:
    task = asyncio.ensure_future(fetch(client, url))
    results = await asyncio.gather(task)
    total = time.time() - start_time
    print(total)
return render(request, 'index.html', {'results':results })

ЗНАЧИТ, имейте в виду, что проверка действительности сертификата является процедурой безопасности. Поэтому вы можете принять это во внимание.

Вернуться на верх