Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance python请求获取无效的url照明速度_Performance_Url_Python Requests - Fatal编程技术网

Performance python请求获取无效的url照明速度

Performance python请求获取无效的url照明速度,performance,url,python-requests,Performance,Url,Python Requests,我有一个10^6 url的列表,我想对照状态代码进行检查。 问题是requests.get对于指定超时的我来说太慢了,有时我甚至在1秒超时的情况下也不能确定url是否有效(比如说服务器响应太慢) 所以,我现在做: import request url = "https://dupa.ucho.elo.8" r = requests.get(url, headers={'Connection': 'close'}, timeout=1) 如何在不设置超时的情况下快速检查url是否有效,并立即返

我有一个10^6 url的列表,我想对照状态代码进行检查。 问题是requests.get对于指定超时的我来说太慢了,有时我甚至在1秒超时的情况下也不能确定url是否有效(比如说服务器响应太慢)

所以,我现在做:

import request

url = "https://dupa.ucho.elo.8"
r = requests.get(url, headers={'Connection': 'close'}, timeout=1)
如何在不设置超时的情况下快速检查url是否有效,并立即返回无效url的响应

  • 注1:我想避免使用grequests模块
  • 注2:我不想使用多线程
  • 我读过这个
    https://stackoverflow.com/questions/17782142/why-doesnt-requests-get-return-what-is-the-default-timeout-that-requests-geta
    但它涉及超时设置

虽然由于避免了多线程处理,这可能不会给您带来闪电般的速度,但您可以检查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

您可能需要编写更具体的错误捕获逻辑,因为通常捕获所有错误都是错误的。

get方法中仍然存在默认超时