python 使用pycurl来测网站的网速

最近服务器去访问第三方服务器时网速偶尔比较慢,写个脚本监测下对方网站的网速,看是否有网络波动,给出优化方案。

这里使用pycurl的小部分功能,主要是获取网站访问的速度和响应时间。

import pycurl
import os,sys
import time
import sys
from loguru import logger
import time
# 在window环境下,必须要加./否则创建失败
# logger.add('./network.log',
#            level='DEBUG',
#            format='{time:YYYY-MM-DD HH:mm:ss} - {level} - {file} - {line} - {message}',
#            rotation="10 MB")
logger.add(os.path.dirname(os.path.realpath(__file__))+"/1111111.txt",
           level='DEBUG',
		   encoding='utf-8',
           format='{time:YYYY-MM-DD HH:mm:ss} - {level} - {file} - {line} - {message}',
           rotation="10 MB")

def ce_net_work():
	
	URL="http://www.baidu.com"    #测试网站的域名
	# try:
	#     URL=sys.argv[1]    # 测试网站的域名
	# except Exception as e:
	#     logger.info ("Error:"+str(e))
	#     logger.info ("用法:请输入要探测的web地址")
	#     sys.exit()

	c = pycurl.Curl()
	c.setopt(pycurl.URL, URL)
	c.setopt(pycurl.CONNECTTIMEOUT, 5)
	c.setopt(pycurl.TIMEOUT, 5)
	c.setopt(pycurl.NOPROGRESS, 1)
	c.setopt(pycurl.FORBID_REUSE, 1)
	c.setopt(pycurl.MAXREDIRS, 1)
	c.setopt(pycurl.DNS_CACHE_TIMEOUT,30)

	indexfile = open(os.path.dirname(os.path.realpath(__file__))+"/content.txt", "wb")
	c.setopt(pycurl.WRITEHEADER, indexfile)
	c.setopt(pycurl.WRITEDATA, indexfile)
	try:
	    c.perform()    #提交请求
	except Exception as e:
	    logger.info("connecion error:"+str(e))
	    indexfile.close()
	    c.close()
	    sys.exit()

	NAMELOOKUP_TIME =  c.getinfo(c.NAMELOOKUP_TIME)
	CONNECT_TIME =  c.getinfo(c.CONNECT_TIME)
	PRETRANSFER_TIME =   c.getinfo(c.PRETRANSFER_TIME)
	STARTTRANSFER_TIME = c.getinfo(c.STARTTRANSFER_TIME)

	TOTAL_TIME = c.getinfo(c.TOTAL_TIME)
	HTTP_CODE =  c.getinfo(c.HTTP_CODE)
	SIZE_DOWNLOAD =  c.getinfo(c.SIZE_DOWNLOAD)
	HEADER_SIZE = c.getinfo(c.HEADER_SIZE)
	SPEED_DOWNLOAD=c.getinfo(c.SPEED_DOWNLOAD)

	logger.info(os.path.dirname(os.path.realpath(__file__)))
	logger.info(os.getcwd())

	
	logger.info("测试网站:".format(URL))
	logger.info("HTTP状态码:{}" .format(HTTP_CODE))
	logger.info("HTTP状态码:%s" %(HTTP_CODE))
	logger.info("DNS解析时间:%.2f ms"%(NAMELOOKUP_TIME*1000))
	logger.info("建立连接时间:%.2f ms" %(CONNECT_TIME*1000))
	logger.info("准备传输时间:%.2f ms" %(PRETRANSFER_TIME*1000))
	logger.info("传输开始时间:%.2f ms" %(STARTTRANSFER_TIME*1000))
	logger.info("传输结束总时间:%.2f ms" %(TOTAL_TIME*1000))
	logger.info("下载数据包大小:%d bytes/s" %(SIZE_DOWNLOAD))
	logger.info("HTTP头部大小:%d byte" %(HEADER_SIZE))
	logger.info("平均下载速度:%d bytes/s" %(SPEED_DOWNLOAD))

	logger.info("\n\n\n\n\n")

	#关闭文件及Curl对象
	indexfile.close()
	c.close()


__console = sys.stdout   # 用于后期还原

def write(data):
	with open(os.path.dirname(os.path.realpath(__file__))+"/content2222222222222.txt","a+") as f:
		f.write(data)
		f.write('\n\f')

write(os.getcwd())
write(os.path.dirname(os.path.realpath(__file__)))
# write(URL)

# 把打印重定向文件
f=open('./outfile.log',"a+") 
sys.stdout=f
print('jjdjdjd')

while True:
	ce_net_work()
	
	print('in outfile')
	time.sleep(5)
	pass

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值