python запрос на получение неверной скорости освещения URL - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть список из 10 ^ 6 URL, который я хочу проверить по коду статуса. Дело в том, что request.get слишком медленный для меня с указанным тайм-аутом, и иногда я не могу быть уверен, действителен ли URL или нет даже с 1-секундным таймаутом (скажем, ответ сервера медленный).

Итак, в настоящее время я делаю:

import request

url = "https://dupa.ucho.elo.8"
r = requests.get(url, headers={'Connection': 'close'}, timeout=1)

Как быстро проверить, является ли URL-адрес действительным или нет, без установки тайм-аута и мгновенно вернуть ответ для недействительных URL-адресов?

1 Ответ

0 голосов
/ 21 февраля 2020

Хотя это может не дать вам молниеносной скорости из-за отказа от многопоточности, вы можете проверить, содержит ли ответ URL-адрес то, что вы хотите видеть (200 кодов состояния), и сразу же завершить его.

import requests
import sys

url_list = ['http://google12121.com/','https://google.com/']

for url in url_list:
    try:
        response = requests.get(url)
        if "200" in str(response.status_code):
            print("Yes")
        else:
            print("No")
    except:
        print("Error: "+str(sys.exc_info()[0]))
        continue

Возможно, вы захотите написать более точные c сообщения об ошибках при отлове c, потому что обычно перехват всех ошибок - это плохо.

...