两种获取链接响应码的方法 python实现

两种获取链接响应码的方法 (python实现)

背景:
工作中需要测试某个包是否正常上传到了 yum 仓库,所以需要检测对应地址是否有效,发现之前使用requests 库写的代码出奇的慢,所以做了优化。

分别使用 requests 和 urllib 库实现
结论:使用urllib 库要比 requests 库要快。尤其是对于链接为比较大的文件时。

代码如下:

import requests
import urllib.request
import time

def get_excute_time(fun):
    def wrapper(*args):
        start = time.time()
        fun(*args)
        end = time.time()
        print("spend %.2fs"%(end - start))
    return wrapper


@get_excute_time
def get_code_by_urllib(url):
    status = urllib.request.urlopen(url).code
    return status

@get_excute_time
def get_code_by_requests(url):
    status = requests.get(url).status_code
    return status

if __name__ == "__main__":
    url = "https://mirrors.openanolis.cn/anolis/8/AppStream/x86_64/os/Packages/dotnet-sdk-6.0-6.0.107-1.0.1.an8_6.x86_64.rpm"
    get_code_by_urllib(url)
    get_code_by_requests(url)

执行结果

$ python request_code.py 
spend 0.19s
spend 11.56s

备注:
   如果测试多个 url,也可以使用 threading 模块编写多线程测试,减少 io 阻塞的情况,进一步提高效率。

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...