ArtemBalandin81 / tech_accidents

Приложение для учета и фиксации простоев в бизнес-процессах УК ПИФ, АИФ, НПФ
MIT License
0 stars 0 forks source link

Проверка отсутствия ssl-сертификата у сайта #89

Open ArtemBalandin81 opened 3 months ago

ArtemBalandin81 commented 3 months ago

Why?

Как оказалось, модуль requests при отсутствии у сайта сертификата ssl отказывается его открывать.

How Does It Work Now?

У сайта Агидель истек срок ssl-сертификата и приложение перестало его обрабатывать: www.agidel-am.ru/': 'ConnectionError', 'https://www.ya.ru': 200,

How To Do?

import requests
import structlog
from fastapi import APIRouter, Depends, Query
from requests.exceptions import SSLError

from src.api.constants import *
from src.api.schemas import DBBackupResponse
from src.core.db.user import current_superuser
from src.services.db_backup import DBBackupService
from src.settings import settings

log = structlog.get_logger()
test_router = APIRouter()

@test_router.get(GET_TEST_URL, description=GET_URL_DESCRIPTION)
async def test_get_url(
    url: str = Query(..., example=settings.CONNECTION_TEST_URL_BASE),
) -> dict[str, int | str] | None:
    try:
        status_code = requests.get("https://www.agidel-am.ru/").status_code
        await log.ainfo("{}".format(GET_URL_DESCRIPTION), status_code=status_code, url=url)
        return {url: status_code, "time": ANALYTIC_TO_TIME}
    except SSLError as error:
        await log.aerror("{}".format(FAILED_GET_URL), error=error, url=url)
        return {"error": str(error), "time": ANALYTIC_TO_TIME, "url": url}

Where?

"""src/api/endpoints/test_router.py"""