1. 程式人生 > >Python 自動化運維 pycurl

Python 自動化運維 pycurl

python 自動化 運維

1.探測web服務質量(HTTP狀態碼,請求延時,HTTP頭信息,下載速度等)

web服務質量:1.服務可用性

2.服務響應速度

2.實例

import os,sys  
import pycurl
import time
URL = "http://www.baidu.com"  ##目錄的URL
c = pycurl.Curl()     ##實例化
c.setopt(pycurl.URL,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)     ##指定HTTP重定向的最大數為1
c.setopt(pycurl.DNS_CACHE_TIMEOUT,30)   ##設置保存DNS信息的時間為30S
indexfile  = open(os.path.dirname(os.path.realpath(__file__))+"/content.txt","wb")
c.setopt(pycurl.WRITEHEADER, indexfile)  ##將返回的HTTP HEADER定向到indexfile
c.setopt(pycurl.WRITEDATA, indexfile)    ##將返回的HTML內容定向到indexfile文件對象
try:
    c.perform() ##提交請求
except Exception,e:
    print "error"
    indexfile.close()
    sys.exit()
NAMELOOKUP_TIME = c.getinfo(c.NAMELOOKUP_TIME)  ##獲取DNS解析時間
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)   ##獲取HTTP狀態碼
SIZE_DOWNLOAD = c.getinfo(c.SIZE_DOWNLOAD)  ##獲取下載數據包大小
HEADER_SIZE = c.getinfo(c.HEADER_SIZE)   ##獲取HTTP頭部大小
SPEED_DOWNLOAD = c.getinfo(c.SPEED_DOWNLOAD)  ##獲取平均下載速度

print "http狀態碼:%s " %HTTP_CODE
print "dns解析時間:%.2f ms" %(NAMELOOKUP_TIME*1000)
print "建立連接時間:%.2f ms" %(CONNECT_TIME*1000)
print "準備傳輸時間:%.2f ms" %(PRETRANSFER_TIME*1000)
print "傳輸開始時間: %2.f ms" %(STARTTRANSFER_TIME*1000)
print "傳輸結束總時間: %.2f ms" %(TOTAL_TIME*1000)
print "下載數據包大小: %d bytes/s" %(SIZE_DOWNLOAD)
print "HTTP頭部大小: %d byte" %(HEADER_SIZE)
print "平均下載速度:%d bytes/s"%(SPEED_DOWNLOAD)

indexfile.close() ##關閉文件
c.close()  ##關閉Curl對象


測試

技術分享




Python 自動化運維 pycurl