Python之监控WEB服务质量

模块:pycurl

简介:检测访问域名,计算请求时间,返回时间,以及返回head头部状态信息,计算建立时间,数据传输时间等

# coding: utf-8
import pycurl
import os,sys

URL="https://www.laosiji.com"															#定义访问URL的变量
def webstatus(URL):
    import pycurl
	curl=pycurl.Curl()																	#创建一个对象
	curl.setopt(pycurl.URL,URL)															#定义配置URL
	curl.setopt(pycurl.CONNECTTIMEOUT,5)												#定义建立连接超时时间
	curl.setopt(pycurl.TIMEOUT,5)														#定义连接超时时间
	curl.setopt(pycurl.NOPROGRESS,1)													#是否屏蔽下载进度条,非0即为屏蔽
	curl.setopt(pycurl.MAXREDIRS,5)														#指定HTTP重定向的最大数
	curl.setopt(pycurl.DNS_CACHE_TIMEOUT,60)											#设置保存DNS信息的时间,默认为120秒
	curl.setopt(pycurl.FORBID_REUSE,1)													#完成交互后强制断开连接,不重用
	curl.setopt(pycurl.FRESH_CONNECT,1)													#强制获取新的连接,替代缓存中的连接
	indexfile=open(os.path.dirname(os.path.realpath(__file__))+"/content.txt","wb")		#定义生成indexfile文件对象
	curl.setopt(pycurl.WRITEHEADER,indexfile)											#将返回的HTTP头部head信息保存indexfile文件对象
	curl.setopt(pycurl.WRITEDATA,indexfile)												#将HTML内容定向到indexfile文件对象
	try:
		curl.perform()		#提交请求
	except Exception as e:
		print("connection error:"+str(e))
		indexfile.close()
		curl.close()
		sys.exit()
	
	HTTP_CODE = curl.getinfo(pycurl.HTTP_CODE)											#获取HTTP的状态码
	NAMELOOKUP_TIME = curl.getinfo(pycurl.NAMELOOKUP_TIME)								#获取DNS解析时间
	CONNECT_TIME = curl.getinfo(pycurl.CONNECT_TIME)									#获取建立时间
	PRETRANSFER_TIME = curl.getinfo(pycurl.PRETRANSFER_TIME)							#获取从建立到准备传输所消耗的时间
	STARTTRANSFER_TIME = curl.getinfo(pycurl.STARTTRANSFER_TIME)						#获取从建立连接到传世开始消耗的时间
	TOTAL_TIME = curl.getinfo(pycurl.TOTAL_TIME)										#获取传输总的时间
	SIZE_DOWNLOAD = curl.getinfo(pycurl.SIZE_DOWNLOAD)									#获取下载数据包的总大小
	HEADER_SIZE = curl.getinfo(pycurl.HEADER_SIZE)											#获取HTTP头部的大小
	SPEED_DOWNLOAD = curl.getinfo(pycurl.SPEED_DOWNLOAD)								#获取平均下载的速度
	print("URL路径为:%s" % (URL))
	print("HTTP返回状态码: %s" % (HTTP_CODE))
	print("HTTP头部大小: %.2f byte" % (HEADER_SIZE))
	print("DNS解析时间: %.2f ms" % (NAMELOOKUP_TIME*1000))
	print("建立连接时间: %.2f ms" % (CONNECT_TIME*1000))
	print("准备传输时间: %.2f ms" % (PRETRANSFER_TIME*1000))
	print("传输开始时间: %.2f ms" % (STARTTRANSFER_TIME*1000))
	print("传输结束时间: %.2f ms" % (TOTAL_TIME*1000))
	print("下载数据包大小: %d byte" % (SIZE_DOWNLOAD))
	print("下载平均速度: %d bytes/s" %(SPEED_DOWNLOAD))
	indexfile.close()																	#关闭文件
	curl.close()																		#关闭连接
#webstatus(URL)
发布了62 篇原创文章 · 获赞 16 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41674452/article/details/103974126