Ejemplo n.º 1
0
def busca_disponibilidade_sites(sites):
    """
    Percorrendo a lista de sites para verificar
    a sua disponibilidade. Caso o código de status
    seja 200 (OK), então ela está disponível para acesso.
    """
    resultados = []
    last_exception = ""

    for row in sites:
        url, orgao = row.url, row.orgao
        for tentativa in range(TOTAL_TENTATIVAS):
            try:
                if last_exception == "SSLError":
                    resposta = requests.get(url,
                                            headers=headers,
                                            timeout=60,
                                            verify=False)
                    status_code = resposta.status_code
                else:
                    resposta = requests.get(url, headers=headers, timeout=60)
                    status_code = resposta.status_code
                print("{} - {} - {}".format(orgao, url, status_code))
                last_exception = ""

                if status_code != STATUS_SUCESSO:
                    dados = cria_dados(url=url,
                                       portal=orgao,
                                       resposta=status_code)
                    if not settings.debug:
                        preenche_tab_gs(planilha=planilha_google, dados=dados)
                        resultados.append(dados)
                        checar_timelines(
                            twitter_hander=twitter_bot,
                            mastodon_handler=mastodon_bot,
                            url=url,
                            orgao=orgao,
                        )

            except requests.exceptions.RequestException as e:
                print("Tentativa {}:".format(tentativa + 1))
                print(e)
                if e.__class__.__name__ == "SSLError":
                    last_exception = e.__class__.__name__
                    with open("bases-sem-certificados.txt",
                              "a",
                              encoding="utf-8") as no_certification:
                        no_certification.write("{} - {} - {}\n".format(
                            orgao, url, e))
                    continue
                elif tentativa < TOTAL_TENTATIVAS - 1:
                    continue
                else:
                    with open("bases-com-excecoes.txt", "a",
                              encoding="utf-8") as excecoes:
                        excecoes.write("{} - {} - {}\n".format(orgao, url, e))
            break

    preenche_csv(resultados)
Ejemplo n.º 2
0
def busca_disponibilidade_sites(sites):
    """
    Percorrendo a lista de sites para verificar
    a sua disponibilidade. Caso o código de status
    seja 200 (OK), então ela está disponível para acesso.
    """
    for row in sites:
        url, arroba, orgao = row.url, row.arroba, row.orgao

        for tentativa in range(1, TOTAL_TENTATIVAS + 1):
            try:
                momento = datetime.datetime.now().isoformat(sep=' ',
                                                            timespec='seconds')
                resposta = get(url, timeout=30, headers=headers)
                dados = cria_dados(url=url,
                                   portal=orgao,
                                   resposta=resposta.status_code)
                preenche_csv(arquivo_logs=arq_log, dados=dados)
                if resposta.status_code == STATUS_SUCESSO:
                    print(f'{momento}; O site {url} funcionou corretamente.')
                    break
                else:
                    if tentativa == TOTAL_TENTATIVAS:
                        if not settings.debug:
                            preenche_tab_gs(planilha=planilha_google,
                                            dados=dados)
                        preenche_csv(arquivo_logs=arq_log, dados=dados)
                        print(
                            f"""{momento}; url: {url}; orgão: {orgao}; resposta: {resposta.status_code}"""
                        )
                        if not settings.debug:
                            checar_timelines(mastodon_handler=mastodon_bot,
                                             url=url,
                                             orgao=orgao)

            except (exceptions.ConnectionError, exceptions.Timeout,
                    exceptions.TooManyRedirects) as e:
                dados = cria_dados(url=url, portal=orgao, resposta=str(e))
                if not settings.debug:
                    preenche_tab_gs(planilha=planilha_google, dados=dados)
                preenche_csv(arquivo_logs=arq_log, dados=dados)
                print(
                    f"""{momento}; url: {url}; orgão: {orgao}; resposta:{str(e)}"""
                )
                if not settings.debug:
                    checar_timelines(twitter_hander=twitter_bot,
                                     mastodon_handler=mastodon_bot,
                                     url=url,
                                     orgao=orgao)
                break