python 使用pycurl来测网站的网速
Posted Jason_WangYing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于python 使用pycurl来测网站的网速的主要内容,如果未能解决你的问题,请参考以下文章