python 自動化運維 監測web質量

1.pycurl.Curl() 類實現創建一個 libcurl 包的 Curl 句柄對象無參數。更多關於 libcurl 包的
介紹見 http://curl.haxx.se/libcurl/c/libcurl-tutorial.html。下面介紹 Curl 對象幾個常用的方法。
close() 方法對應 libcurl 包中的 curl_easy_cleanup 方法無參數實現關閉、回收
Curl 對象。
perform() 方法對應 libcurl 包中的 curl_easy_perform 方法無參數實現 Curl 對象
請求的提交。
setopt(option, value) 方法對應 libcurl 包中的 curl_easy_setopt 方法參數 option 是通
libcurl 的常量來指定的參數 value 的值會依賴 option可以是一個字符串、整型、
長整型、文件對象、列表或函數等。下面列舉常用的常量列表
c = pycurl.Curl() # 創建一個 curl 對象
c.setopt(pycurl.CONNECTTIMEOUT, 5) # 連接的等待時間設置爲 0 則不等待
c.setopt(pycurl.TIMEOUT, 5) # 請求超時時間
c.setopt(pycurl.NOPROGRESS, 0) # 是否屏蔽下載進度條非 0 則屏蔽
c.setopt(pycurl.MAXREDIRS, 5) # 指定 HTTP 重定向的最大數
c.setopt(pycurl.FORBID_REUSE, 1) # 完成交互後強制斷開連接不重用
c.setopt(pycurl.FRESH_CONNECT,1) # 強制獲取新的連接即替代緩存中的連接
c.setopt(pycurl.DNS_CACHE_TIMEOUT,60) # 設置保存 DNS 信息的時間默認爲 120
c.setopt(pycurl.URL,"http://www.baidu.com") # 指定請求的 URL
c.setopt(pycurl.USERAGENT,"Mozilla/5.2 (compatible; MSIE 6.0; Windows NT 5.1;
c.setopt(pycurl.HEADERFUNCTION, getheader) # 將返回的 HTTP HEADER 定向到回調函數 getheader

c.setopt(pycurl.WRITEFUNCTION, getbody) # 將返回的內容定向到回調函數 getbody
c.setopt(pycurl.WRITEHEADER, fileobj) # 將返回的 HTTP HEADER 定向到 fileobj 文件對象
c.setopt(pycurl.WRITEDATA, fileobj) # 將返回的 HTML 內容定向到 fileobj 文件對象


getinfo(option) 方法對應 libcurl 包中的 curl_easy_getinfo 方法參數 option 是通過
libcurl 的常量來指定的。下面列舉常用的常量列表
c = pycurl.Curl() # 創建一個 curl 對象
c.getinfo(pycurl.HTTP_CODE) # 返回的 HTTP 狀態碼
c.getinfo(pycurl.TOTAL_TIME) # 傳輸結束所消耗的總時間
c.getinfo(pycurl.NAMELOOKUP_TIME) #DNS 解析所消耗的時間
c.getinfo(pycurl.CONNECT_TIME) # 建立連接所消耗的時間
c.getinfo(pycurl.PRETRANSFER_TIME) # 從建立連接到準備傳輸所消耗的時間
c.getinfo(pycurl.STARTTRANSFER_TIME) # 從建立連接到傳輸開始消耗的時間
c.getinfo(pycurl.REDIRECT_TIME) # 重定向所消耗的時間
c.getinfo(pycurl.SIZE_UPLOAD) # 上傳數據包大小
c.getinfo(pycurl.SIZE_DOWNLOAD) # 下載數據包大小
c.getinfo(pycurl.SPEED_DOWNLOAD) # 平均下載速度
c.getinfo(pycurl.SPEED_UPLOAD) # 平均上傳速度
c.getinfo(pycurl.HEADER_SIZE) #HTTP 頭部大小

2.

#!/usr/bin/python

# -*- coding: utf-8 -*-


import sys

import pycurl

import time

import os,sys


URL = "www.baidu.com"

c = pycurl.Curl()

c.setopt(pycurl.URL,URL)

c.setopt(pycurl.CONNECTTIMEOUT, 30)

c.setopt(pycurl.TIMEOUT, 30)

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,e:

    print "commection 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)


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 " 傳輸開始時間 %.2f ms"  %(STARTTRANSFER_TIME*1000)

print " 準備傳輸時間 %.2f ms"  %(PRETRANSFER_TIME*1000)

print " 傳輸開始時間 %.2f 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)

# 關閉文件及 Curl 對象

indexfile.close()

c.close()


生成content.txt的文本

wKioL1XgAGnzZnguAAZqquPz3JU232.jpg


3.原本自動化運維裏使用的是www.google.com.hk的URL但是出現commection error:(7, 'Failed to connect to www.google.com.hk port 80: Timed out')

就把URL改成URL = "www.baidu.com"就可以正常用了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章